diff --git a/tests/functional/test_bundle.py b/tests/functional/test_bundle.py index 164617587..bac4722d7 100644 --- a/tests/functional/test_bundle.py +++ b/tests/functional/test_bundle.py @@ -7,7 +7,7 @@ from tests.lib.path import Path from tests.lib.local_repos import local_checkout -def test_create_bundle(script): +def test_create_bundle(script, tmpdir): """ Test making a bundle. We'll grab one package from the filesystem (the FSPkg dummy package), one from vcs (initools) and one from an @@ -19,7 +19,7 @@ def test_create_bundle(script): pkg_lines = textwrap.dedent('''\ -e %s -e %s#egg=initools-dev - pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) + pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")))) script.scratch_path.join("bundle-req.txt").write(pkg_lines) # Create a bundle in env.scratch_path/ test.pybundle result = script.pip('bundle', '-r', script.scratch_path/ 'bundle-req.txt', script.scratch_path/ 'test.pybundle') @@ -32,7 +32,7 @@ def test_create_bundle(script): assert 'build/pip/' in files -def test_cleanup_after_create_bundle(script): +def test_cleanup_after_create_bundle(script, tmpdir): """ Test clean up after making a bundle. Make sure (build|src)-bundle/ dirs are removed but not src/. @@ -41,7 +41,7 @@ def test_cleanup_after_create_bundle(script): args = ['install'] args.extend(['-e', '%s#egg=pip-test-package' % - local_checkout('git+http://github.com/pypa/pip-test-package.git')]) + local_checkout('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache"))]) script.pip(*args) build = script.venv_path/"build" src = script.venv_path/"src" @@ -53,7 +53,7 @@ def test_cleanup_after_create_bundle(script): pkg_lines = textwrap.dedent('''\ -e %s -e %s#egg=initools-dev - pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) + pip''' % (fspkg, local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")))) script.scratch_path.join("bundle-req.txt").write(pkg_lines) script.pip('bundle', '-r', 'bundle-req.txt', 'test.pybundle') build_bundle = script.scratch_path/"build-bundle" diff --git a/tests/functional/test_freeze.py b/tests/functional/test_freeze.py index 858efbe3a..0cf3f9f0c 100644 --- a/tests/functional/test_freeze.py +++ b/tests/functional/test_freeze.py @@ -58,15 +58,15 @@ def test_freeze_basic(script): _check_output(result, expected) -def test_freeze_svn(script): +def test_freeze_svn(script, tmpdir): """Test freezing a svn checkout""" - checkout_path = local_checkout('svn+http://svn.colorstudy.com/INITools/trunk') + checkout_path = local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")) #svn internally stores windows drives as uppercase; we'll match that. checkout_path = checkout_path.replace('c:', 'C:') result = script.run('svn', 'co', '-r10', - local_repo('svn+http://svn.colorstudy.com/INITools/trunk'), + local_repo('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")), 'initools-trunk') result = script.run('python', 'setup.py', 'develop', cwd=script.scratch_path/ 'initools-trunk', expect_stderr=True) @@ -79,12 +79,12 @@ def test_freeze_svn(script): _check_output(result, expected) -def test_freeze_git_clone(script): +def test_freeze_git_clone(script, tmpdir): """ Test freezing a Git clone. """ - result = script.run('git', 'clone', local_repo('git+http://github.com/pypa/pip-test-package.git'), 'pip-test-package') + result = script.run('git', 'clone', local_repo('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache")), 'pip-test-package') result = script.run('git', 'checkout', '7d654e66c8fa7149c165ddeffa5b56bc06619458', cwd=script.scratch_path / 'pip-test-package', expect_stderr=True) result = script.run('python', 'setup.py', 'develop', @@ -94,29 +94,29 @@ def test_freeze_git_clone(script): Script result: ...pip freeze -- stdout: -------------------- ...-e %s@...#egg=pip_test_package-... - ...""" % local_checkout('git+http://github.com/pypa/pip-test-package.git')) + ...""" % local_checkout('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache"))) _check_output(result, expected) result = script.pip('freeze', '-f', - '%s#egg=pip_test_package' % local_checkout('git+http://github.com/pypa/pip-test-package.git'), + '%s#egg=pip_test_package' % local_checkout('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache")), expect_stderr=True) expected = textwrap.dedent("""\ Script result: pip freeze -f %(repo)s#egg=pip_test_package -- stdout: -------------------- -f %(repo)s#egg=pip_test_package... -e %(repo)s@...#egg=pip_test_package-0.1.1 - ...""" % {'repo': local_checkout('git+http://github.com/pypa/pip-test-package.git')}) + ...""" % {'repo': local_checkout('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache"))}) _check_output(result, expected) -def test_freeze_mercurial_clone(script): +def test_freeze_mercurial_clone(script, tmpdir): """ Test freezing a Mercurial clone. """ result = script.run('hg', 'clone', '-r', 'c9963c111e7c', - local_repo('hg+http://bitbucket.org/pypa/pip-test-package'), + local_repo('hg+http://bitbucket.org/pypa/pip-test-package', tmpdir.join("cache")), 'pip-test-package') result = script.run('python', 'setup.py', 'develop', cwd=script.scratch_path/'pip-test-package', expect_stderr=True) @@ -125,33 +125,33 @@ def test_freeze_mercurial_clone(script): Script result: ...pip freeze -- stdout: -------------------- ...-e %s@...#egg=pip_test_package-... - ...""" % local_checkout('hg+http://bitbucket.org/pypa/pip-test-package')) + ...""" % local_checkout('hg+http://bitbucket.org/pypa/pip-test-package', tmpdir.join("cache"))) _check_output(result, expected) result = script.pip('freeze', '-f', - '%s#egg=pip_test_package' % local_checkout('hg+http://bitbucket.org/pypa/pip-test-package'), + '%s#egg=pip_test_package' % local_checkout('hg+http://bitbucket.org/pypa/pip-test-package', tmpdir.join("cache")), expect_stderr=True) expected = textwrap.dedent("""\ Script result: ...pip freeze -f %(repo)s#egg=pip_test_package -- stdout: -------------------- -f %(repo)s#egg=pip_test_package ...-e %(repo)s@...#egg=pip_test_package-dev - ...""" % {'repo': local_checkout('hg+http://bitbucket.org/pypa/pip-test-package')}) + ...""" % {'repo': local_checkout('hg+http://bitbucket.org/pypa/pip-test-package', tmpdir.join("cache"))}) _check_output(result, expected) -def test_freeze_bazaar_clone(script): +def test_freeze_bazaar_clone(script, tmpdir): """ Test freezing a Bazaar clone. """ - checkout_path = local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1') + checkout_path = local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1', tmpdir.join("cache")) #bzr internally stores windows drives as uppercase; we'll match that. checkout_pathC = checkout_path.replace('c:', 'C:') result = script.run('bzr', 'checkout', '-r', '174', - local_repo('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'), + local_repo('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1', tmpdir.join("cache")), 'django-wikiapp') result = script.run('python', 'setup.py', 'develop', cwd=script.scratch_path/'django-wikiapp') diff --git a/tests/functional/test_install.py b/tests/functional/test_install.py index f7c0c6750..23fc1b1bd 100644 --- a/tests/functional/test_install.py +++ b/tests/functional/test_install.py @@ -46,18 +46,18 @@ def test_editable_install(script): assert not result.files_updated, result.files_updated -def test_install_editable_from_svn(script): +def test_install_editable_from_svn(script, tmpdir): """ Test checking out from svn. """ result = script.pip('install', '-e', '%s#egg=initools-dev' % - local_checkout('svn+http://svn.colorstudy.com/INITools/trunk')) + local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache"))) result.assert_installed('INITools', with_files=['.svn']) -def test_download_editable_to_custom_path(script): +def test_download_editable_to_custom_path(script, tmpdir): """ Test downloading an editable using a relative custom src folder. """ @@ -65,7 +65,7 @@ def test_download_editable_to_custom_path(script): result = script.pip('install', '-e', '%s#egg=initools-dev' % - local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'), + local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")), '--src', 'customsrc', '--download', @@ -80,21 +80,21 @@ def test_download_editable_to_custom_path(script): assert customdl_files_created -def test_editable_no_install_followed_by_no_download(script): +def test_editable_no_install_followed_by_no_download(script, tmpdir): """ Test installing an editable in two steps (first with --no-install, then with --no-download). """ result = script.pip('install', '-e', '%s#egg=initools-dev' % - local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'), + local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")), '--no-install', expect_error=True) result.assert_installed('INITools', without_egg_link=True, with_files=['.svn']) result = script.pip('install', '-e', '%s#egg=initools-dev' % - local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'), + local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")), '--no-download', expect_error=True) result.assert_installed('INITools', without_files=[curdir, '.svn']) @@ -140,58 +140,58 @@ def test_install_dev_version_from_pypi(script): assert (script.site_packages / 'initools') in result.files_created, str(result.stdout) -def test_install_editable_from_git(script): +def test_install_editable_from_git(script, tmpdir): """ Test cloning from Git. """ args = ['install'] args.extend(['-e', '%s#egg=pip-test-package' % - local_checkout('git+http://github.com/pypa/pip-test-package.git')]) + local_checkout('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache"))]) result = script.pip(*args, **{"expect_error": True}) result.assert_installed('pip-test-package', with_files=['.git']) -def test_install_editable_from_hg(script): +def test_install_editable_from_hg(script, tmpdir): """ Test cloning from Mercurial. """ result = script.pip('install', '-e', '%s#egg=ScriptTest' % - local_checkout('hg+https://bitbucket.org/ianb/scripttest'), + local_checkout('hg+https://bitbucket.org/ianb/scripttest', tmpdir.join("cache")), expect_error=True) result.assert_installed('ScriptTest', with_files=['.hg']) -def test_vcs_url_final_slash_normalization(script): +def test_vcs_url_final_slash_normalization(script, tmpdir): """ Test that presence or absence of final slash in VCS URL is normalized. """ result = script.pip('install', '-e', '%s/#egg=ScriptTest' % - local_checkout('hg+https://bitbucket.org/ianb/scripttest'), + local_checkout('hg+https://bitbucket.org/ianb/scripttest', tmpdir.join("cache")), expect_error=True) assert 'pip-log.txt' not in result.files_created, result.files_created['pip-log.txt'].bytes -def test_install_editable_from_bazaar(script): +def test_install_editable_from_bazaar(script, tmpdir): """ Test checking out from Bazaar. """ result = script.pip('install', '-e', '%s/@174#egg=django-wikiapp' % - local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'), + local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1', tmpdir.join("cache")), expect_error=True) result.assert_installed('django-wikiapp', with_files=['.bzr']) -def test_vcs_url_urlquote_normalization(script): +def test_vcs_url_urlquote_normalization(script, tmpdir): """ Test that urlquoted characters are normalized for repo URL comparison. """ result = script.pip('install', '-e', '%s/#egg=django-wikiapp' % - local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1'), + local_checkout('bzr+http://bazaar.launchpad.net/%7Edjango-wikiapp/django-wikiapp/release-0.1', tmpdir.join("cache")), expect_error=True) assert 'pip-log.txt' not in result.files_created, result.files_created['pip-log.txt'].bytes @@ -295,7 +295,7 @@ def test_install_with_hacked_egg_info(script): assert 'Successfully installed hackedegginfo\n' in result.stdout -def test_install_using_install_option_and_editable(script): +def test_install_using_install_option_and_editable(script, tmpdir): """ Test installing a tool using -e and --install-option """ @@ -303,20 +303,20 @@ def test_install_using_install_option_and_editable(script): script.scratch_path.join(folder).mkdir() url = 'git+git://github.com/pypa/virtualenv' result = script.pip('install', '-e', '%s#egg=virtualenv' % - local_checkout(url), + local_checkout(url, tmpdir.join("cache")), '--install-option=--script-dir=%s' % folder) virtualenv_bin = script.venv/'src'/'virtualenv'/folder/'virtualenv'+script.exe assert virtualenv_bin in result.files_created -def test_install_global_option_using_editable(script): +def test_install_global_option_using_editable(script, tmpdir): """ Test using global distutils options, but in an editable installation """ url = 'hg+http://bitbucket.org/runeh/anyjson' result = script.pip('install', '--global-option=--version', '-e', '%s@0.2.5#egg=anyjson' % - local_checkout(url)) + local_checkout(url, tmpdir.join("cache"))) assert '0.2.5\n' in result.stdout diff --git a/tests/functional/test_install_cleanup.py b/tests/functional/test_install_cleanup.py index 5c6cc1f91..29632ed77 100644 --- a/tests/functional/test_install_cleanup.py +++ b/tests/functional/test_install_cleanup.py @@ -29,7 +29,7 @@ def test_no_clean_option_blocks_cleaning_after_install(script): assert exists(build), "build/simple should still exist %s" % str(result) -def test_cleanup_after_install_editable_from_hg(script): +def test_cleanup_after_install_editable_from_hg(script, tmpdir): """ Test clean up after cloning from Mercurial. @@ -37,7 +37,7 @@ def test_cleanup_after_install_editable_from_hg(script): script.pip('install', '-e', '%s#egg=ScriptTest' % - local_checkout('hg+https://bitbucket.org/ianb/scripttest'), + local_checkout('hg+https://bitbucket.org/ianb/scripttest', tmpdir.join("cache")), expect_error=True) build = script.venv_path/'build' src = script.venv_path/'src' diff --git a/tests/functional/test_install_index.py b/tests/functional/test_install_index.py index f4f388ad4..e3a8f8ef2 100644 --- a/tests/functional/test_install_index.py +++ b/tests/functional/test_install_index.py @@ -3,7 +3,7 @@ import textwrap from pip.backwardcompat import urllib -from tests.lib import pyversion, tests_data, path_to_url +from tests.lib import pyversion, tests_data, path_to_url, packages def test_find_links_relative_path(script): diff --git a/tests/functional/test_install_reqs.py b/tests/functional/test_install_reqs.py index 9203841b5..e32e477c1 100644 --- a/tests/functional/test_install_reqs.py +++ b/tests/functional/test_install_reqs.py @@ -59,7 +59,7 @@ def test_relative_requirements_file(script): assert (script.site_packages/'fspkg') in result.files_created, str(result.stdout) -def test_multiple_requirements_files(script): +def test_multiple_requirements_files(script, tmpdir): """ Test installing from multiple nested requirements files. @@ -67,7 +67,7 @@ def test_multiple_requirements_files(script): other_lib_name, other_lib_version = 'anyjson', '0.3' script.scratch_path.join("initools-req.txt").write(textwrap.dedent("""\ -e %s@10#egg=INITools-dev - -r %s-req.txt""" % (local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'), + -r %s-req.txt""" % (local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")), other_lib_name))) script.scratch_path.join("%s-req.txt" % other_lib_name).write(textwrap.dedent("""\ %s<=%s diff --git a/tests/functional/test_install_upgrade.py b/tests/functional/test_install_upgrade.py index f9823b797..04b9dad4a 100644 --- a/tests/functional/test_install_upgrade.py +++ b/tests/functional/test_install_upgrade.py @@ -183,10 +183,10 @@ def test_install_with_ignoreinstalled_requested(script): assert script.site_packages/'INITools-0.1-py%s.egg-info' % pyversion not in result.files_created -def test_upgrade_vcs_req_with_no_dists_found(script): +def test_upgrade_vcs_req_with_no_dists_found(script, tmpdir): """It can upgrade a VCS requirement that has no distributions otherwise.""" req = "%s#egg=pip-test-package" % local_checkout( - "git+http://github.com/pypa/pip-test-package.git") + "git+http://github.com/pypa/pip-test-package.git", tmpdir.join("cache")) script.pip("install", req) result = script.pip("install", "-U", req) assert not result.returncode diff --git a/tests/functional/test_install_user.py b/tests/functional/test_install_user.py index e0e94dfdf..98c107b6c 100644 --- a/tests/functional/test_install_user.py +++ b/tests/functional/test_install_user.py @@ -52,14 +52,14 @@ class Tests_UserSite: assert 'INITools'== project_name, "'%s' should be 'INITools'" %project_name - def test_install_subversion_usersite_editable_with_distribute(self, script, virtualenv): + def test_install_subversion_usersite_editable_with_distribute(self, script, virtualenv, tmpdir): """ Test installing current directory ('.') into usersite after installing distribute """ virtualenv.system_site_packages = True result = script.pip('install', '--user', '-e', '%s#egg=initools-dev' % - local_checkout('svn+http://svn.colorstudy.com/INITools/trunk')) + local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache"))) result.assert_installed('INITools', use_user_site=True) diff --git a/tests/functional/test_install_vcs.py b/tests/functional/test_install_vcs.py index a4b02ffd2..bfeb2c1f2 100644 --- a/tests/functional/test_install_vcs.py +++ b/tests/functional/test_install_vcs.py @@ -2,13 +2,13 @@ from tests.lib import _create_test_package, _change_test_package_version from tests.lib.local_repos import local_checkout -def test_install_editable_from_git_with_https(script): +def test_install_editable_from_git_with_https(script, tmpdir): """ Test cloning from Git with https. """ result = script.pip('install', '-e', '%s#egg=pip-test-package' % - local_checkout('git+https://github.com/pypa/pip-test-package.git'), + local_checkout('git+https://github.com/pypa/pip-test-package.git', tmpdir.join("cache")), expect_error=True) result.assert_installed('pip-test-package', with_files=['.git']) @@ -49,59 +49,60 @@ def test_git_with_tag_name_as_revision(script): assert '0.1' in version.stdout -def test_git_with_tag_name_and_update(script): +def test_git_with_tag_name_and_update(script, tmpdir): """ Test cloning a git repository and updating to a different version. """ result = script.pip('install', '-e', '%s#egg=pip-test-package' % - local_checkout('git+http://github.com/pypa/pip-test-package.git'), + local_checkout('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache")), expect_error=True) result.assert_installed('pip-test-package', with_files=['.git']) result = script.pip('install', '--global-option=--version', '-e', '%s@0.1.2#egg=pip-test-package' % - local_checkout('git+http://github.com/pypa/pip-test-package.git'), + local_checkout('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache")), expect_error=True) assert '0.1.2' in result.stdout -def test_git_branch_should_not_be_changed(script): +def test_git_branch_should_not_be_changed(script, tmpdir): """ Editable installations should not change branch related to issue #32 and #161 """ script.pip('install', '-e', '%s#egg=pip-test-package' % - local_checkout('git+http://github.com/pypa/pip-test-package.git'), + local_checkout('git+http://github.com/pypa/pip-test-package.git', tmpdir.join("cache")), expect_error=True) source_dir = script.venv_path/'src'/'pip-test-package' result = script.run('git', 'branch', cwd=source_dir) assert '* master' in result.stdout, result.stdout -def test_git_with_non_editable_unpacking(script): +def test_git_with_non_editable_unpacking(script, tmpdir): """ Test cloning a git repository from a non-editable URL with a given tag. """ result = script.pip('install', '--global-option=--version', local_checkout( - 'git+http://github.com/pypa/pip-test-package.git@0.1.2#egg=pip-test-package' + 'git+http://github.com/pypa/pip-test-package.git@0.1.2#egg=pip-test-package', + tmpdir.join("cache") ), expect_error=True) assert '0.1.2' in result.stdout -def test_git_with_editable_where_egg_contains_dev_string(script): +def test_git_with_editable_where_egg_contains_dev_string(script, tmpdir): """ Test cloning a git repository from an editable url which contains "dev" string """ result = script.pip('install', '-e', '%s#egg=django-devserver' % - local_checkout('git+git://github.com/dcramer/django-devserver.git')) + local_checkout('git+git://github.com/dcramer/django-devserver.git', tmpdir.join("cache"))) result.assert_installed('django-devserver', with_files=['.git']) -def test_git_with_non_editable_where_egg_contains_dev_string(script): +def test_git_with_non_editable_where_egg_contains_dev_string(script, tmpdir): """ Test cloning a git repository from a non-editable url which contains "dev" string """ result = script.pip('install', '%s#egg=django-devserver' % - local_checkout('git+git://github.com/dcramer/django-devserver.git')) + local_checkout('git+git://github.com/dcramer/django-devserver.git', tmpdir.join("cache"))) devserver_folder = script.site_packages/'devserver' assert devserver_folder in result.files_created, str(result) diff --git a/tests/functional/test_uninstall.py b/tests/functional/test_uninstall.py index 2fec6ff42..df08ea4d6 100644 --- a/tests/functional/test_uninstall.py +++ b/tests/functional/test_uninstall.py @@ -113,40 +113,42 @@ def test_uninstall_easy_installed_console_scripts(script): assert_all_changes(result, result2, [script.venv/'build', 'cache']) -def test_uninstall_editable_from_svn(script): +def test_uninstall_editable_from_svn(script, tmpdir): """ Test uninstalling an editable installation from svn. """ result = script.pip('install', '-e', '%s#egg=initools-dev' % - local_checkout('svn+http://svn.colorstudy.com/INITools/trunk')) + local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache"))) result.assert_installed('INITools') result2 = script.pip('uninstall', '-y', 'initools') assert (script.venv/'src'/'initools' in result2.files_after), 'oh noes, pip deleted my sources!' assert_all_changes(result, result2, [script.venv/'src', script.venv/'build']) -def test_uninstall_editable_with_source_outside_venv(script): +def test_uninstall_editable_with_source_outside_venv(script, tmpdir): """ Test uninstalling editable install from existing source outside the venv. """ + cache_dir = tmpdir.join("cache") + try: temp = mkdtemp() tmpdir = join(temp, 'virtualenv') - _test_uninstall_editable_with_source_outside_venv(script, tmpdir) + _test_uninstall_editable_with_source_outside_venv(script, tmpdir, cache_dir) finally: rmtree(temp) -def _test_uninstall_editable_with_source_outside_venv(script, tmpdir): - result = script.run('git', 'clone', local_repo('git+git://github.com/pypa/virtualenv'), tmpdir) +def _test_uninstall_editable_with_source_outside_venv(script, tmpdir, cache_dir): + result = script.run('git', 'clone', local_repo('git+git://github.com/pypa/virtualenv', cache_dir), tmpdir) result2 = script.pip('install', '-e', tmpdir) assert (join(script.site_packages, 'virtualenv.egg-link') in result2.files_created), list(result2.files_created.keys()) result3 = script.pip('uninstall', '-y', 'virtualenv', expect_error=True) assert_all_changes(result, result3, [script.venv/'build']) -def test_uninstall_from_reqs_file(script): +def test_uninstall_from_reqs_file(script, tmpdir): """ Test uninstall from a requirements file. @@ -155,7 +157,7 @@ def test_uninstall_from_reqs_file(script): -e %s#egg=initools-dev # and something else to test out: PyLogo<0.4 - """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) + """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")))) result = script.pip('install', '-r', 'test-req.txt') script.scratch_path.join("test-req.txt").write(textwrap.dedent("""\ # -f, -i, and --extra-index-url should all be ignored by uninstall @@ -166,7 +168,7 @@ def test_uninstall_from_reqs_file(script): -e %s#egg=initools-dev # and something else to test out: PyLogo<0.4 - """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk'))) + """ % local_checkout('svn+http://svn.colorstudy.com/INITools/trunk', tmpdir.join("cache")))) result2 = script.pip('uninstall', '-r', 'test-req.txt', '-y') assert_all_changes( result, result2, [script.venv/'build', script.venv/'src', script.scratch/'test-req.txt']) diff --git a/tests/lib/local_repos.py b/tests/lib/local_repos.py index 00c309194..8f56b9442 100644 --- a/tests/lib/local_repos.py +++ b/tests/lib/local_repos.py @@ -13,16 +13,13 @@ else: subprocess_call = subprocess.call -CACHE_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'tests_cache') +def _create_initools_repository(directory): + subprocess_call('svnadmin create INITools'.split(), cwd=directory) -def _create_initools_repository(): - subprocess_call('svnadmin create INITools'.split(), cwd=_get_vcs_folder()) - - -def _dump_initools_repository(): +def _dump_initools_repository(directory): filename, _ = urlretrieve('http://bitbucket.org/hltbra/pip-initools-dump/raw/8b55c908a320/INITools_modified.dump') - initools_folder = os.path.join(_get_vcs_folder(), 'INITools') + initools_folder = os.path.join(directory, 'INITools') devnull = open(os.devnull, 'w') dump = open(filename) subprocess_call(['svnadmin', 'load', initools_folder], stdin=dump, stdout=devnull) @@ -31,21 +28,13 @@ def _dump_initools_repository(): os.remove(filename) -def _create_svn_repository_for_initools(): - tests_cache = _get_vcs_folder() - if not os.path.exists(os.path.join(tests_cache, 'INITools')): - _create_initools_repository() - _dump_initools_repository() +def _create_svn_repository_for_initools(directory): + if not os.path.exists(os.path.join(directory, 'INITools')): + _create_initools_repository(directory) + _dump_initools_repository(directory) -def _get_vcs_folder(): - if not os.path.exists(CACHE_PATH): - os.mkdir(CACHE_PATH) - return CACHE_PATH - - -def _get_vcs_and_checkout_url(remote_repository): - tests_cache = _get_vcs_folder() +def _get_vcs_and_checkout_url(remote_repository, directory): vcs_classes = {'svn': subversion.Subversion, 'git': git.Git, 'bzr': bazaar.Bazaar, @@ -62,17 +51,21 @@ def _get_vcs_and_checkout_url(remote_repository): else: repository_name = os.path.basename(remote_repository) - destination_path = os.path.join(tests_cache, repository_name) + destination_path = os.path.join(directory, repository_name) if not os.path.exists(destination_path): vcs_class(remote_repository).obtain(destination_path) - return '%s+%s' % (vcs, path_to_url('/'.join([tests_cache, repository_name, branch]))) + return '%s+%s' % (vcs, path_to_url('/'.join([directory, repository_name, branch]))) -def local_checkout(remote_repo): +def local_checkout(remote_repo, directory): + if not os.path.exists(directory): + os.mkdir(directory) + #os.makedirs(directory) + if remote_repo.startswith('svn'): - _create_svn_repository_for_initools() - return _get_vcs_and_checkout_url(remote_repo) + _create_svn_repository_for_initools(directory) + return _get_vcs_and_checkout_url(remote_repo, directory) -def local_repo(remote_repo): - return local_checkout(remote_repo).split('+', 1)[1] +def local_repo(remote_repo, directory): + return local_checkout(remote_repo, directory).split('+', 1)[1]