def _test_config_file_override_stack(config_file): environ = clear_environ(os.environ.copy()) environ['PIP_CONFIG_FILE'] = config_file # set this to make pip load it reset_env(environ) write_file( config_file, textwrap.dedent("""\ [global] index-url = http://download.zope.org/ppix """)) result = run_pip('install', '-vvv', 'INITools', expect_error=True) assert "Getting page http://download.zope.org/ppix/INITools" in result.stdout reset_env(environ) write_file( config_file, textwrap.dedent("""\ [global] index-url = http://download.zope.org/ppix [install] index-url = http://pypi.appspot.com/ """)) result = run_pip('install', '-vvv', 'INITools', expect_error=True) assert "Getting page http://pypi.appspot.com/INITools" in result.stdout result = run_pip('install', '-vvv', '--index-url', 'http://pypi.python.org/simple', 'INITools', expect_error=True) assert "Getting page http://download.zope.org/ppix/INITools" not in result.stdout assert "Getting page http://pypi.appspot.com/INITools" not in result.stdout assert "Getting page http://pypi.python.org/simple/INITools" in result.stdout
def test_freeze_mercurial_clone(): """ Test freezing a Mercurial clone. """ reset_env() env = get_env() result = env.run( "hg", "clone", "-r", "f8f7eaf275c5", "http://bitbucket.org/jezdez/django-dbtemplates/", "django-dbtemplates" ) result = env.run("python", "setup.py", "develop", cwd=env.scratch_path / "django-dbtemplates") result = run_pip("freeze", expect_stderr=True) expected = textwrap.dedent( """\ Script result: ...pip freeze -- stdout: -------------------- -e hg+http://bitbucket.org/jezdez/django-dbtemplates/@...#egg=django_dbtemplates-... ...""" ) _check_output(result, expected) result = run_pip( "freeze", "-f", "hg+http://bitbucket.org/jezdez/django-dbtemplates#egg=django_dbtemplates", expect_stderr=True ) expected = textwrap.dedent( """\ Script result: ...pip freeze -f hg+http://bitbucket.org/jezdez/django-dbtemplates#egg=django_dbtemplates -- stdout: -------------------- -f hg+http://bitbucket.org/jezdez/django-dbtemplates#egg=django_dbtemplates -e hg+http://bitbucket.org/jezdez/django-dbtemplates/@...#egg=django_dbtemplates-... ...""" ) _check_output(result, expected)
def test_uninstall_from_reqs_file(): """ Test uninstall from a requirements file. """ env = reset_env() write_file('test-req.txt', textwrap.dedent("""\ -e %s#egg=initools-dev # and something else to test out: PyLogo<0.4 """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) result = run_pip('install', '-r', 'test-req.txt') write_file('test-req.txt', textwrap.dedent("""\ # -f, -i, and --extra-index-url should all be ignored by uninstall -f http://www.example.com -i http://www.example.com --extra-index-url http://www.example.com -e %s#egg=initools-dev # and something else to test out: PyLogo<0.4 """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) result2 = run_pip('uninstall', '-r', 'test-req.txt', '-y') assert_all_changes( result, result2, [env.venv/'build', env.venv/'src', env.scratch/'test-req.txt'])
def test_cleanup_after_create_bundle(): """ Test clean up after making a bundle. Make sure (build|src)-bundle/ dirs are removed but not src/. """ env = reset_env() # Install an editable to create a src/ dir. run_pip( 'install', '-e', '%s#egg=django-feedutil' % local_checkout('git+http://github.com/jezdez/django-feedutil.git')) build = env.venv_path / "build" src = env.venv_path / "src" assert not exists(build), "build/ dir still exists: %s" % build assert exists(src), "expected src/ dir doesn't exist: %s" % src # Make the bundle. fspkg = 'file://%s/FSPkg' % join(here, 'packages') pkg_lines = textwrap.dedent( '''\ -e %s -e %s#egg=initools-dev pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) write_file('bundle-req.txt', pkg_lines) run_pip('bundle', '-r', 'bundle-req.txt', 'test.pybundle') build_bundle = env.scratch_path / "build-bundle" src_bundle = env.scratch_path / "src-bundle" assert not exists( build_bundle), "build-bundle/ dir still exists: %s" % build_bundle assert not exists( src_bundle), "src-bundle/ dir still exists: %s" % src_bundle # Make sure previously created src/ from editable still exists assert exists(src), "expected src dir doesn't exist: %s" % src
def _test_uninstall_editable_with_source_outside_venv(tmpdir): env = reset_env() result = env.run('hg', 'clone', local_repo('hg+http://bitbucket.org/ianb/virtualenv'), tmpdir) result2 = run_pip('install', '-e', tmpdir) assert (join(env.site_packages, 'virtualenv.egg-link') in result2.files_created), result2.files_created.keys() result3 = run_pip('uninstall', '-y', 'virtualenv', expect_error=True) assert_all_changes(result, result3, [env.venv/'build'])
def test_upgrade_from_reqs_file(): """ Upgrade from a requirements file. """ env = reset_env() write_file( 'test-req.txt', textwrap.dedent("""\ PyLogo<0.4 # and something else to test out: INITools==0.3 """)) install_result = run_pip('install', '-r', env.scratch_path / 'test-req.txt') write_file( 'test-req.txt', textwrap.dedent("""\ PyLogo # and something else to test out: INITools """)) run_pip('install', '--upgrade', '-r', env.scratch_path / 'test-req.txt') uninstall_result = run_pip('uninstall', '-r', env.scratch_path / 'test-req.txt', '-y') assert_all_changes( install_result, uninstall_result, [env.venv / 'build', 'cache', env.scratch / 'test-req.txt'])
def test_outdated_default(): """ Test default behavor of oudated command """ env = reset_env() total_re = re.compile('LATEST: +([0-9.]+)') write_file( 'initools-req.txt', textwrap.dedent("""\ INITools==0.2 # and something else to test out: simplejson==2.0.0 """)) run_pip('install', '-r', env.scratch_path / 'initools-req.txt') result = run_pip('search', 'simplejson') simplejson_ver = total_re.search(str(result)).group(1) result = run_pip('search', 'INITools') initools_ver = total_re.search(str(result)).group(1) result = run_pip('outdated', expect_stderr=True) expected = textwrap.dedent("""\ Script result: pip outdated -- stdout: -------------------- simplejson==2.0.0 (LATEST: %s) INITools==0.2 (LATEST: %s) <BLANKLINE>""" % (simplejson_ver, initools_ver)) _check_output(result, expected)
def test_freeze_with_local_option(): """ Test that wsgiref (from global site-packages) is reported normally, but not with --local. """ reset_env() result = run_pip('install', 'initools==0.2') result = run_pip('freeze', expect_stderr=True) expected = textwrap.dedent("""\ Script result: ...pip freeze -- stdout: -------------------- INITools==0.2 wsgiref==... <BLANKLINE>""") # The following check is broken (see # http://bitbucket.org/ianb/pip/issue/110). For now we are simply # neutering this test, but if we can't find a way to fix it, # this whole function should be removed. # _check_output(result, expected) result = run_pip('freeze', '--local', expect_stderr=True) expected = textwrap.dedent("""\ Script result: ...pip freeze --local -- stdout: -------------------- INITools==0.2 <BLANKLINE>""") _check_output(result, expected)
def test_create_bundle(): """ Test making a bundle. We'll grab one package from the filesystem (the FSPkg dummy package), one from vcs (initools) and one from an index (pip itself). """ env = reset_env() fspkg = path_to_url2(Path(here) / 'packages' / 'FSPkg') run_pip('install', '-e', fspkg) pkg_lines = textwrap.dedent( '''\ -e %s -e %s#egg=initools-dev pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) write_file('bundle-req.txt', pkg_lines) # Create a bundle in env.scratch_path/ test.pybundle result = run_pip('bundle', '-r', env.scratch_path / 'bundle-req.txt', env.scratch_path / 'test.pybundle') bundle = result.files_after.get(join('scratch', 'test.pybundle'), None) assert bundle is not None files = zipfile.ZipFile(bundle.full).namelist() assert 'src/FSPkg/' in files assert 'src/initools/' in files assert 'build/pip/' in files
def test_freeze_bazaar_clone(): """ Test freezing a Bazaar clone. """ reset_env() env = get_env() result = env.run('bzr', 'checkout', '-r', '174', local_repo('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'), 'django-wikiapp') result = env.run('python', 'setup.py', 'develop', cwd=env.scratch_path/'django-wikiapp') result = run_pip('freeze', expect_stderr=True) expected = textwrap.dedent("""\ Script result: ...pip freeze -- stdout: -------------------- -e %s@...#egg=django_wikiapp-... ...""" % local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1')) _check_output(result, expected) result = run_pip('freeze', '-f', '%s/#egg=django-wikiapp' % local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'), expect_stderr=True) expected = textwrap.dedent("""\ Script result: ...pip freeze -f %(repo)s/#egg=django-wikiapp -- stdout: -------------------- -f %(repo)s/#egg=django-wikiapp -e %(repo)s@...#egg=django_wikiapp-... ...""" % {'repo': local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1')}) _check_output(result, expected)
def test_freeze_mercurial_clone(): """ Test freezing a Mercurial clone. """ reset_env() env = get_env() result = env.run('hg', 'clone', '-r', 'f8f7eaf275c5', local_repo('hg+http://bitbucket.org/jezdez/django-dbtemplates'), 'django-dbtemplates') result = env.run('python', 'setup.py', 'develop', cwd=env.scratch_path/'django-dbtemplates') result = run_pip('freeze', expect_stderr=True) expected = textwrap.dedent("""\ Script result: ...pip freeze -- stdout: -------------------- -e %s@...#egg=django_dbtemplates-... ...""" % local_checkout('hg+http://bitbucket.org/jezdez/django-dbtemplates')) _check_output(result, expected) result = run_pip('freeze', '-f', '%s#egg=django_dbtemplates' % local_checkout('hg+http://bitbucket.org/jezdez/django-dbtemplates'), expect_stderr=True) expected = textwrap.dedent("""\ Script result: ...pip freeze -f %(repo)s#egg=django_dbtemplates -- stdout: -------------------- -f %(repo)s#egg=django_dbtemplates -e %(repo)s@...#egg=django_dbtemplates-... ...""" % {'repo': local_checkout('hg+http://bitbucket.org/jezdez/django-dbtemplates')}) _check_output(result, expected)
def test_uninstall_from_reqs_file(): """ Test uninstall from a requirements file. """ env = reset_env() write_file( 'test-req.txt', textwrap.dedent("""\ -e %s#egg=initools-dev # and something else to test out: PyLogo<0.4 """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) result = run_pip('install', '-r', 'test-req.txt') write_file( 'test-req.txt', textwrap.dedent("""\ # -f, -i, and --extra-index-url should all be ignored by uninstall -f http://www.example.com -i http://www.example.com --extra-index-url http://www.example.com -e %s#egg=initools-dev # and something else to test out: PyLogo<0.4 """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) result2 = run_pip('uninstall', '-r', 'test-req.txt', '-y') assert_all_changes( result, result2, [env.venv / 'build', env.venv / 'src', env.scratch / 'test-req.txt'])
def test_config_file_override_stack(): """ Test config files (global, overriding a global config with a local, overriding all with a command line flag). """ f, config_file = tempfile.mkstemp('-pip.cfg', 'test-') environ = clear_environ(os.environ.copy()) environ['PIP_CONFIG_FILE'] = config_file # set this to make pip load it reset_env(environ) write_file(config_file, textwrap.dedent("""\ [global] index-url = http://download.zope.org/ppix """)) result = run_pip('install', '-vvv', 'INITools', expect_error=True) assert "Getting page http://download.zope.org/ppix/INITools" in result.stdout reset_env(environ) write_file(config_file, textwrap.dedent("""\ [global] index-url = http://download.zope.org/ppix [install] index-url = http://pypi.appspot.com/ """)) result = run_pip('install', '-vvv', 'INITools', expect_error=True) assert "Getting page http://pypi.appspot.com/INITools" in result.stdout result = run_pip('install', '-vvv', '--index-url', 'http://pypi.python.org/simple', 'INITools', expect_error=True) assert "Getting page http://download.zope.org/ppix/INITools" not in result.stdout assert "Getting page http://pypi.appspot.com/INITools" not in result.stdout assert "Getting page http://pypi.python.org/simple/INITools" in result.stdout
def test_no_install_followed_by_no_download(): """ Test installing in two steps (first with --no-install, then with --no-download). """ env = reset_env() egg_info_folder = env.site_packages / 'INITools-0.2-py%s.egg-info' % pyversion initools_folder = env.site_packages / 'initools' build_dir = env.venv / 'build' / 'INITools' result1 = run_pip('install', 'INITools==0.2', '--no-install', expect_error=True) assert egg_info_folder not in result1.files_created, str(result1) assert initools_folder not in result1.files_created, sorted( result1.files_created) assert build_dir in result1.files_created, result1.files_created assert build_dir / 'INITools.egg-info' in result1.files_created result2 = run_pip('install', 'INITools==0.2', '--no-download', expect_error=True) assert egg_info_folder in result2.files_created, str(result2) assert initools_folder in result2.files_created, sorted( result2.files_created) assert build_dir not in result2.files_created assert build_dir / 'INITools.egg-info' not in result2.files_created
def test_outdated_default(): """ Test default behavor of oudated command """ env = reset_env() total_re = re.compile('LATEST: +([0-9.]+)') write_file('initools-req.txt', textwrap.dedent("""\ INITools==0.2 # and something else to test out: simplejson==2.0.0 """)) run_pip('install', '-r', env.scratch_path/'initools-req.txt') result = run_pip('search', 'simplejson') simplejson_ver = total_re.search(str(result)).group(1) result = run_pip('search', 'INITools') initools_ver = total_re.search(str(result)).group(1) result = run_pip('outdated', expect_stderr=True) expected = textwrap.dedent("""\ Script result: pip outdated -- stdout: -------------------- simplejson==2.0.0 (LATEST: %s) INITools==0.2 (LATEST: %s) <BLANKLINE>""" % (simplejson_ver, initools_ver)) _check_output(result, expected)
def _test_config_file_override_stack(config_file): environ = clear_environ(os.environ.copy()) environ["PIP_CONFIG_FILE"] = config_file # set this to make pip load it reset_env(environ) write_file( config_file, textwrap.dedent( """\ [global] index-url = http://download.zope.org/ppix """ ), ) result = run_pip("install", "-vvv", "INITools", expect_error=True) assert "Getting page http://download.zope.org/ppix/INITools" in result.stdout reset_env(environ) write_file( config_file, textwrap.dedent( """\ [global] index-url = http://download.zope.org/ppix [install] index-url = http://pypi.appspot.com/ """ ), ) result = run_pip("install", "-vvv", "INITools", expect_error=True) assert "Getting page http://pypi.appspot.com/INITools" in result.stdout result = run_pip("install", "-vvv", "--index-url", "http://pypi.python.org/simple", "INITools", expect_error=True) assert "Getting page http://download.zope.org/ppix/INITools" not in result.stdout assert "Getting page http://pypi.appspot.com/INITools" not in result.stdout assert "Getting page http://pypi.python.org/simple/INITools" in result.stdout
def test_editable_no_install_followed_by_no_download(): """ Test installing an editable in two steps (first with --no-install, then with --no-download). """ reset_env() result = run_pip( 'install', '-e', '%s#egg=initools-dev' % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'), '--no-install', expect_error=True) result.assert_installed('INITools', without_egg_link=True, with_files=['.svn']) result = run_pip( 'install', '-e', '%s#egg=initools-dev' % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'), '--no-download', expect_error=True) result.assert_installed('INITools', without_files=[curdir, '.svn'])
def test_create_bundle(): """ Test making a bundle. We'll grab one package from the filesystem (the FSPkg dummy package), one from vcs (initools) and one from an index (pip itself). """ env = reset_env() fspkg = path_to_url2(Path(here) / "packages" / "FSPkg") dummy = run_pip("install", "-e", fspkg) pkg_lines = textwrap.dedent( """\ -e %s -e svn+http://svn.colorstudy.com/INITools/trunk#egg=initools-dev pip""" % fspkg ) write_file("bundle-req.txt", pkg_lines) # Create a bundle in env.scratch_path/ test.pybundle result = run_pip("bundle", "-r", env.scratch_path / "bundle-req.txt", env.scratch_path / "test.pybundle") bundle = result.files_after.get(join("scratch", "test.pybundle"), None) assert bundle is not None files = zipfile.ZipFile(bundle.full).namelist() assert "src/FSPkg/" in files assert "src/initools/" in files assert "build/pip/" in files
def test_cleanup_after_create_bundle(): """ Test clean up after making a bundle. Make sure (build|src)-bundle/ dirs are removed but not src/. """ env = reset_env() # Install an editable to create a src/ dir. run_pip('install', '-e', '%s#egg=django-feedutil' % local_checkout('git+http://github.com/jezdez/django-feedutil.git')) build = env.venv_path/"build" src = env.venv_path/"src" assert not exists(build), "build/ dir still exists: %s" % build assert exists(src), "expected src/ dir doesn't exist: %s" % src # Make the bundle. fspkg = 'file://%s/FSPkg' %join(here, 'packages') pkg_lines = textwrap.dedent('''\ -e %s -e %s#egg=initools-dev pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) write_file('bundle-req.txt', pkg_lines) run_pip('bundle', '-r', 'bundle-req.txt', 'test.pybundle') build_bundle = env.scratch_path/"build-bundle" src_bundle = env.scratch_path/"src-bundle" assert not exists(build_bundle), "build-bundle/ dir still exists: %s" % build_bundle assert not exists(src_bundle), "src-bundle/ dir still exists: %s" % src_bundle # Make sure previously created src/ from editable still exists assert exists(src), "expected src dir doesn't exist: %s" % src
def test_freeze_git_clone(): """ Test freezing a Git clone. """ env = reset_env() result = env.run('git', 'clone', local_repo('git+http://github.com/jezdez/django-pagination.git'), 'django-pagination') result = env.run('git', 'checkout', '1df6507872d73ee387eb375428eafbfc253dfcd8', cwd=env.scratch_path/'django-pagination', expect_stderr=True) result = env.run('python', 'setup.py', 'develop', cwd=env.scratch_path / 'django-pagination') result = run_pip('freeze', expect_stderr=True) expected = textwrap.dedent("""\ Script result: ...pip freeze -- stdout: -------------------- -e %s@...#egg=django_pagination-... ...""" % local_checkout('git+http://github.com/jezdez/django-pagination.git')) _check_output(result, expected) result = run_pip('freeze', '-f', '%s#egg=django_pagination' % local_checkout('git+http://github.com/jezdez/django-pagination.git'), expect_stderr=True) expected = textwrap.dedent("""\ Script result: pip freeze -f %(repo)s#egg=django_pagination -- stdout: -------------------- -f %(repo)s#egg=django_pagination -e %(repo)s@...#egg=django_pagination-...-dev ...""" % {'repo': local_checkout('git+http://github.com/jezdez/django-pagination.git')}) _check_output(result, expected)
def test_upgrade_if_requested(): """ And it does upgrade if requested. """ reset_env() run_pip('install', 'INITools==0.1', expect_error=True) result = run_pip('install', '--upgrade', 'INITools', expect_error=True) assert result.files_created, 'pip install --upgrade did not upgrade'
def test_no_upgrade_unless_requested(): """ No upgrade if not specifically requested. """ reset_env() run_pip('install', 'INITools==0.1', expect_error=True) result = run_pip('install', 'INITools', expect_error=True) assert not result.files_created, 'pip install INITools upgraded when it should not have'
def test_upgrade_to_specific_version(): """ It does upgrade to specific version requested. """ reset_env() run_pip('install', 'INITools==0.1', expect_error=True) result = run_pip('install', 'INITools==0.2', expect_error=True) assert result.files_created, 'pip install with specific version did not upgrade'
def test_upgrade_if_requested(): """ And it does upgrade if requested. """ env = reset_env() run_pip('install', 'INITools==0.1', expect_error=True) result = run_pip('install', '--upgrade', 'INITools', expect_error=True) assert result.files_created, 'pip install --upgrade did not upgrade' assert env.site_packages / 'INITools-0.1-py%s.egg-info' % pyversion not in result.files_created
def _test_uninstall_editable_with_source_outside_venv(tmpdir): env = reset_env() result = env.run('hg', 'clone', local_repo('hg+http://bitbucket.org/ianb/virtualenv'), tmpdir) result2 = run_pip('install', '-e', tmpdir) assert (join(env.site_packages, 'virtualenv.egg-link') in result2.files_created), result2.files_created.keys() result3 = run_pip('uninstall', '-y', 'virtualenv', expect_error=True) assert_all_changes(result, result3, [env.venv / 'build'])
def test_simple_uninstall(): """ Test simple install and uninstall. """ env = reset_env() result = run_pip('install', 'INITools==0.2', expect_error=True) assert join(env.site_packages, 'initools') in result.files_created, sorted(result.files_created.keys()) result2 = run_pip('uninstall', 'INITools', '-y', expect_error=True) assert_all_changes(result, result2, [env.venv/'build', 'cache'])
def test_uninstall_console_scripts(): """ Test uninstalling a package with more files (console_script entry points, extra directories). """ env = reset_env() result = run_pip('install', 'virtualenv', expect_error=True) assert env.bin/'virtualenv'+env.exe in result.files_created, sorted(result.files_created.keys()) result2 = run_pip('uninstall', 'virtualenv', '-y', expect_error=True) assert_all_changes(result, result2, [env.venv/'build', 'cache'])
def test_upgrade_if_requested(): """ And it does upgrade if requested. """ env = reset_env() run_pip('install', 'INITools==0.1', expect_error=True) result = run_pip('install', '--upgrade', 'INITools', expect_error=True) assert result.files_created, 'pip install --upgrade did not upgrade' assert env.site_packages/'INITools-0.1-py%s.egg-info' % pyversion not in result.files_created
def test_uninstall_editable_from_svn(): """ Test uninstalling an editable installation from svn. """ env = reset_env() result = run_pip('install', '-e', 'svn+http://svn.colorstudy.com/INITools/trunk#egg=initools-dev') result.assert_installed('INITools') result2 = run_pip('uninstall', '-y', 'initools') assert (env.venv/'src'/'initools' in result2.files_after), 'oh noes, pip deleted my sources!' assert_all_changes(result, result2, [env.venv/'src', env.venv/'build'])
def test_should_not_install_always_from_cache(): """ If there is an old cached package, pip should download the newer version Related to issue #175 """ env = reset_env() run_pip('install', 'INITools==0.2', expect_error=True) run_pip('uninstall', '-y', 'INITools') result = run_pip('install', 'INITools==0.1', expect_error=True) assert env.site_packages / 'INITools-0.2-py%s.egg-info' % pyversion not in result.files_created assert env.site_packages / 'INITools-0.1-py%s.egg-info' % pyversion in result.files_created
def test_upgrade_to_specific_version(): """ It does upgrade to specific version requested. """ env = reset_env() run_pip('install', 'INITools==0.1', expect_error=True) result = run_pip('install', 'INITools==0.2', expect_error=True) assert result.files_created, 'pip install with specific version did not upgrade' assert env.site_packages / 'INITools-0.1-py%s.egg-info' % pyversion in result.files_deleted assert env.site_packages / 'INITools-0.2-py%s.egg-info' % pyversion in result.files_created
def test_should_not_install_always_from_cache(): """ If there is an old cached package, pip should download the newer version Related to issue #175 """ env = reset_env() run_pip('install', 'INITools==0.2', expect_error=True) run_pip('uninstall', '-y', 'INITools') result = run_pip('install', 'INITools==0.1', expect_error=True) assert env.site_packages/'INITools-0.2-py%s.egg-info' % pyversion not in result.files_created assert env.site_packages/'INITools-0.1-py%s.egg-info' % pyversion in result.files_created
def test_git_with_sha1_revisions(): """ Git backend should be able to install from SHA1 revisions """ env = reset_env() version_pkg_path = _create_test_package(env) _change_test_package_version(env, version_pkg_path) sha1 = env.run('git', 'rev-parse', 'HEAD~1', cwd=version_pkg_path).stdout.strip() run_pip('install', '-e', '%s@%s#egg=version_pkg' % ('git+file://' + version_pkg_path.abspath.replace('\\', '/'), sha1)) version = env.run('version_pkg') assert '0.1' in version.stdout, version.stdout
def test_git_with_tag_name_as_revision(): """ Git backend should be able to install from tag names """ env = reset_env() version_pkg_path = _create_test_package(env) env.run('git', 'tag', 'test_tag', expect_stderr=True, cwd=version_pkg_path) _change_test_package_version(env, version_pkg_path) run_pip('install', '-e', '%s@test_tag#egg=version_pkg' % ('git+file://' + version_pkg_path.abspath.replace('\\', '/'))) version = env.run('version_pkg') assert '0.1' in version.stdout
def test_uninstall_console_scripts(): """ Test uninstalling a package with more files (console_script entry points, extra directories). """ env = reset_env() result = run_pip('install', 'virtualenv', expect_error=True) assert env.bin / 'virtualenv' + env.exe in result.files_created, sorted( result.files_created.keys()) result2 = run_pip('uninstall', 'virtualenv', '-y', expect_error=True) assert_all_changes(result, result2, [env.venv / 'build', 'cache'])
def test_cleanup_after_install_from_pypi(): """ Test clean up after installing a package from PyPI. """ env = reset_env() run_pip('install', 'INITools==0.2', expect_error=True) build = env.scratch_path / "build" src = env.scratch_path / "src" assert not exists(build), "build/ dir still exists: %s" % build assert not exists(src), "unexpected src/ dir exists: %s" % src
def test_upgrade_to_specific_version(): """ It does upgrade to specific version requested. """ env = reset_env() run_pip('install', 'INITools==0.1', expect_error=True) result = run_pip('install', 'INITools==0.2', expect_error=True) assert result.files_created, 'pip install with specific version did not upgrade' assert env.site_packages/'INITools-0.1-py%s.egg-info' % pyversion in result.files_deleted assert env.site_packages/'INITools-0.2-py%s.egg-info' % pyversion in result.files_created
def test_simple_uninstall(): """ Test simple install and uninstall. """ env = reset_env() result = run_pip('install', 'INITools==0.2', expect_error=True) assert join(env.site_packages, 'initools') in result.files_created, sorted( result.files_created.keys()) result2 = run_pip('uninstall', 'INITools', '-y', expect_error=True) assert_all_changes(result, result2, [env.venv / 'build', 'cache'])
def test_cleanup_after_install_from_pypi(): """ Test clean up after installing a package from PyPI. """ env = reset_env() run_pip('install', 'INITools==0.2', expect_error=True) build = env.scratch_path/"build" src = env.scratch_path/"src" assert not exists(build), "build/ dir still exists: %s" % build assert not exists(src), "unexpected src/ dir exists: %s" % src
def test_uninstall_before_upgrade_from_url(): """ Automatic uninstall-before-upgrade from URL. """ env = reset_env() result = run_pip('install', 'INITools==0.2', expect_error=True) assert env.site_packages/ 'initools' in result.files_created, sorted(result.files_created.keys()) result2 = run_pip('install', 'http://pypi.python.org/packages/source/I/INITools/INITools-0.3.tar.gz', expect_error=True) assert result2.files_created, 'upgrade to INITools 0.3 failed' result3 = run_pip('uninstall', 'initools', '-y', expect_error=True) assert_all_changes(result, result3, [env.venv/'build', 'cache'])
def test_uninstall_namespace_package(): """ Uninstall a distribution with a namespace package without clobbering the namespace and everything in it. """ env = reset_env() result = run_pip('install', 'pd.requires==0.0.3', expect_error=True) assert join(env.site_packages, 'pd') in result.files_created, sorted(result.files_created.keys()) result2 = run_pip('uninstall', 'pd.find', '-y', expect_error=True) assert join(env.site_packages, 'pd') not in result2.files_deleted, sorted(result2.files_deleted.keys()) assert join(env.site_packages, 'pd', 'find') in result2.files_deleted, sorted(result2.files_deleted.keys())
def test_git_branch_should_not_be_changed(): """ Editable installations should not change branch related to issue #32 and #161 """ env = reset_env() run_pip('install', '-e', '%s#egg=django-staticfiles' % local_checkout('git+http://github.com/jezdez/django-staticfiles.git'), expect_error=True) source_dir = env.venv_path/'src'/'django-staticfiles' result = env.run('git', 'branch', cwd=source_dir) assert '* master' in result.stdout
def test_cleanup_after_install_from_local_directory(): """ Test clean up after installing from a local directory. """ env = reset_env() to_install = abspath(join(here, 'packages', 'FSPkg')) run_pip('install', to_install, expect_error=False) build = env.venv_path/'build' src = env.venv_path/'src' assert not exists(build), "unexpected build/ dir exists: %s" % build assert not exists(src), "unexpected src/ dir exist: %s" % src
def test_uninstall_before_upgrade(): """ Automatic uninstall-before-upgrade. """ env = reset_env() result = run_pip('install', 'INITools==0.2', expect_error=True) assert env.site_packages/ 'initools' in result.files_created, sorted(result.files_created.keys()) result2 = run_pip('install', 'INITools==0.3', expect_error=True) assert result2.files_created, 'upgrade to INITools 0.3 failed' result3 = run_pip('uninstall', 'initools', '-y', expect_error=True) assert_all_changes(result, result3, [env.venv/'build', 'cache'])
def test_uninstall_editable_with_source_outside_venv(): """ Test uninstalling editable install from existing source outside the venv. """ tmpdir = join(mkdtemp(), 'virtualenv') env = reset_env() result = env.run('hg', 'clone', 'http://bitbucket.org/ianb/virtualenv/', tmpdir) result2 = run_pip('install', '-e', tmpdir) assert (join(env.site_packages, 'virtualenv.egg-link') in result2.files_created), result2.files_created.keys() result3 = run_pip('uninstall', '-y', 'virtualenv', expect_error=True) assert_all_changes(result, result3, [env.venv/'build'])
def test_cleanup_after_install_from_local_directory(): """ Test clean up after installing from a local directory. """ env = reset_env() to_install = abspath(join(here, 'packages', 'FSPkg')) run_pip('install', to_install, expect_error=False) build = env.venv_path / 'build' src = env.venv_path / 'src' assert not exists(build), "unexpected build/ dir exists: %s" % build assert not exists(src), "unexpected src/ dir exist: %s" % src
def test_git_with_tag_name_as_revision(): """ Git backend should be able to install from tag names """ env = reset_env() version_pkg_path = _create_test_package(env) env.run('git', 'tag', 'test_tag', expect_stderr=True, cwd=version_pkg_path) _change_test_package_version(env, version_pkg_path) run_pip( 'install', '-e', '%s@test_tag#egg=version_pkg' % ('git+file://' + version_pkg_path.abspath.replace('\\', '/'))) version = env.run('version_pkg') assert '0.1' in version.stdout
def test_uninstall_before_upgrade(): """ Automatic uninstall-before-upgrade. """ env = reset_env() result = run_pip('install', 'INITools==0.2', expect_error=True) assert env.site_packages / 'initools' in result.files_created, sorted( result.files_created.keys()) result2 = run_pip('install', 'INITools==0.3', expect_error=True) assert result2.files_created, 'upgrade to INITools 0.3 failed' result3 = run_pip('uninstall', 'initools', '-y', expect_error=True) assert_all_changes(result, result3, [env.venv / 'build', 'cache'])
def test_uninstall_editable_from_svn(): """ Test uninstalling an editable installation from svn. """ env = reset_env() result = run_pip( 'install', '-e', '%s#egg=initools-dev' % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk')) result.assert_installed('INITools') result2 = run_pip('uninstall', '-y', 'initools') assert (env.venv / 'src' / 'initools' in result2.files_after), 'oh noes, pip deleted my sources!' assert_all_changes(result, result2, [env.venv / 'src', env.venv / 'build'])
def test_git_with_sha1_revisions(): """ Git backend should be able to install from SHA1 revisions """ env = reset_env() version_pkg_path = _create_test_package(env) _change_test_package_version(env, version_pkg_path) sha1 = env.run('git', 'rev-parse', 'HEAD~1', cwd=version_pkg_path).stdout.strip() run_pip( 'install', '-e', '%s@%s#egg=version_pkg' % ('git+file://' + version_pkg_path.abspath.replace('\\', '/'), sha1)) version = env.run('version_pkg') assert '0.1' in version.stdout, version.stdout
def test_cleanup_after_install_editable_from_hg(): """ Test clean up after cloning from Mercurial. """ env = reset_env() run_pip('install', '-e', '%s#egg=django-registration' % local_checkout( 'hg+http://bitbucket.org/ubernostrum/django-registration'), expect_error=True) build = env.venv_path / 'build' src = env.venv_path / 'src' assert not exists(build), "build/ dir still exists: %s" % build assert exists(src), "expected src/ dir doesn't exist: %s" % src
def test_git_branch_should_not_be_changed(): """ Editable installations should not change branch related to issue #32 and #161 """ env = reset_env() run_pip( 'install', '-e', '%s#egg=django-staticfiles' % local_checkout('git+http://github.com/jezdez/django-staticfiles.git'), expect_error=True) source_dir = env.venv_path / 'src' / 'django-staticfiles' result = env.run('git', 'branch', cwd=source_dir) assert '* master' in result.stdout
def test_uninstall_namespace_package(): """ Uninstall a distribution with a namespace package without clobbering the namespace and everything in it. """ env = reset_env() result = run_pip('install', 'pd.requires==0.0.3', expect_error=True) assert join(env.site_packages, 'pd') in result.files_created, sorted( result.files_created.keys()) result2 = run_pip('uninstall', 'pd.find', '-y', expect_error=True) assert join(env.site_packages, 'pd') not in result2.files_deleted, sorted( result2.files_deleted.keys()) assert join(env.site_packages, 'pd', 'find') in result2.files_deleted, sorted( result2.files_deleted.keys())
def test_install_with_pax_header(): """ test installing from a tarball with pax header for python<2.6 """ reset_env() run_from = abspath(join(here, 'packages')) result = run_pip('install', 'paxpkg.tar.bz2', cwd=run_from)
def test_correct_pip_version(): """ Check we are running proper version of pip in run_pip. """ reset_env() # output is like: # pip PIPVERSION from PIPDIRECTORY (python PYVERSION) result = run_pip('--version') # compare the directory tree of the invoked pip with that of this source distribution dir = re.match(r'pip \d(.[\d])+ from (.*) \(python \d(.[\d])+\)$', result.stdout).group(2) pip_folder = join(src_folder, 'pip') pip_folder_outputed = join(dir, 'pip') diffs = filecmp.dircmp(pip_folder, pip_folder_outputed) # If any non-matching .py files exist, we have a problem: run_pip # is picking up some other version! N.B. if this project acquires # primary resources other than .py files, this code will need # maintenance mismatch_py = [ x for x in diffs.left_only + diffs.right_only + diffs.diff_files if x.endswith('.py') ] assert not mismatch_py, 'mismatched source files in %r and %r' % ( pip_folder, pip_folder_outputed)
def test_editable_git_upgrade(): """ Test installing an editable git package from a repository, upgrading the repository, installing again, and check it gets the newer version """ env = reset_env() version_pkg_path = _create_test_package(env) run_pip('install', '-e', '%s#egg=version_pkg' % ('git+file://' + version_pkg_path)) version = env.run('version_pkg') assert '0.1' in version.stdout _change_test_package_version(env, version_pkg_path) run_pip('install', '-e', '%s#egg=version_pkg' % ('git+file://' + version_pkg_path)) version2 = env.run('version_pkg') assert 'some different version' in version2.stdout
def test_uninstall_before_upgrade_from_url(): """ Automatic uninstall-before-upgrade from URL. """ env = reset_env() result = run_pip('install', 'INITools==0.2', expect_error=True) assert env.site_packages / 'initools' in result.files_created, sorted( result.files_created.keys()) result2 = run_pip( 'install', 'http://pypi.python.org/packages/source/I/INITools/INITools-0.3.tar.gz', expect_error=True) assert result2.files_created, 'upgrade to INITools 0.3 failed' result3 = run_pip('uninstall', 'initools', '-y', expect_error=True) assert_all_changes(result, result3, [env.venv / 'build', 'cache'])
def test_freeze_git_clone(): """ Test freezing a Git clone. """ env = reset_env() result = env.run( 'git', 'clone', local_repo('git+http://github.com/jezdez/django-pagination.git'), 'django-pagination') result = env.run('git', 'checkout', '1df6507872d73ee387eb375428eafbfc253dfcd8', cwd=env.scratch_path / 'django-pagination', expect_stderr=True) result = env.run('python', 'setup.py', 'develop', cwd=env.scratch_path / 'django-pagination') result = run_pip('freeze', expect_stderr=True) expected = textwrap.dedent( """\ Script result: ...pip freeze -- stdout: -------------------- -e %s@...#egg=django_pagination-... ...""" % local_checkout('git+http://github.com/jezdez/django-pagination.git')) _check_output(result, expected) result = run_pip( 'freeze', '-f', '%s#egg=django_pagination' % local_checkout('git+http://github.com/jezdez/django-pagination.git'), expect_stderr=True) expected = textwrap.dedent( """\ Script result: pip freeze -f %(repo)s#egg=django_pagination -- stdout: -------------------- -f %(repo)s#egg=django_pagination -e %(repo)s@...#egg=django_pagination-dev ...""" % { 'repo': local_checkout( 'git+http://github.com/jezdez/django-pagination.git') }) _check_output(result, expected)