diff options
Diffstat (limited to 'tests/functional')
-rw-r--r-- | tests/functional/test_install.py | 79 | ||||
-rw-r--r-- | tests/functional/test_install_config.py | 5 | ||||
-rw-r--r-- | tests/functional/test_install_reqs.py | 20 | ||||
-rw-r--r-- | tests/functional/test_install_wheel.py | 12 | ||||
-rw-r--r-- | tests/functional/test_wheel.py | 79 |
5 files changed, 106 insertions, 89 deletions
diff --git a/tests/functional/test_install.py b/tests/functional/test_install.py index 033ad3dc8..b26f8037c 100644 --- a/tests/functional/test_install.py +++ b/tests/functional/test_install.py @@ -146,10 +146,8 @@ def test_install_editable_from_svn(script): result.assert_installed('version-pkg', with_files=['.svn']) -def _test_install_editable_from_git(script, tmpdir, wheel): +def _test_install_editable_from_git(script, tmpdir): """Test cloning from Git.""" - if wheel: - script.pip('install', 'wheel') pkg_path = _create_test_package(script, name='testpackage', vcs='git') args = ['install', '-e', 'git+%s#egg=testpackage' % path_to_url(pkg_path)] result = script.pip(*args, **{"expect_error": True}) @@ -157,12 +155,14 @@ def _test_install_editable_from_git(script, tmpdir, wheel): def test_install_editable_from_git(script, tmpdir): - _test_install_editable_from_git(script, tmpdir, False) + _test_install_editable_from_git(script, tmpdir) @pytest.mark.network -def test_install_editable_from_git_autobuild_wheel(script, tmpdir): - _test_install_editable_from_git(script, tmpdir, True) +def test_install_editable_from_git_autobuild_wheel( + script, tmpdir, common_wheels): + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) + _test_install_editable_from_git(script, tmpdir) @pytest.mark.network @@ -936,21 +936,21 @@ def test_install_topological_sort(script, data): @pytest.mark.network -def test_install_wheel_broken(script, data): - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) +def test_install_wheel_broken(script, data, common_wheels): + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) res = script.pip( - 'install', '--no-index', '-f', data.find_links, 'wheelbroken', + 'install', '--no-index', '-f', data.find_links, '-f', common_wheels, + 'wheelbroken', expect_stderr=True) assert "Successfully installed wheelbroken-0.1" in str(res), str(res) @pytest.mark.network -def test_cleanup_after_failed_wheel(script, data): - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) +def test_cleanup_after_failed_wheel(script, data, common_wheels): + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) res = script.pip( - 'install', '--no-index', '-f', data.find_links, 'wheelbrokenafter', + 'install', '--no-index', '-f', data.find_links, '-f', common_wheels, + 'wheelbrokenafter', expect_stderr=True) # One of the effects of not cleaning up is broken scripts: script_py = script.bin_path / "script.py" @@ -962,15 +962,14 @@ def test_cleanup_after_failed_wheel(script, data): @pytest.mark.network -def test_install_builds_wheels(script, data): +def test_install_builds_wheels(script, data, common_wheels): # NB This incidentally tests a local tree + tarball inputs # see test_install_editable_from_git_autobuild_wheel for editable # vcs coverage. - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) to_install = data.packages.join('requires_wheelbroken_upper') res = script.pip( - 'install', '--no-index', '-f', data.find_links, + 'install', '--no-index', '-f', data.find_links, '-f', common_wheels, to_install, expect_stderr=True) expected = ("Successfully installed requires-wheelbroken-upper-0" " upper-2.0 wheelbroken-0.1") @@ -1002,12 +1001,13 @@ def test_install_builds_wheels(script, data): @pytest.mark.network -def test_install_no_binary_disables_building_wheels(script, data): - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) +def test_install_no_binary_disables_building_wheels( + script, data, common_wheels): + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) to_install = data.packages.join('requires_wheelbroken_upper') res = script.pip( 'install', '--no-index', '--no-binary=upper', '-f', data.find_links, + '-f', common_wheels, to_install, expect_stderr=True) expected = ("Successfully installed requires-wheelbroken-upper-0" " upper-2.0 wheelbroken-0.1") @@ -1035,12 +1035,11 @@ def test_install_no_binary_disables_building_wheels(script, data): @pytest.mark.network -def test_install_no_binary_disables_cached_wheels(script, data): - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) +def test_install_no_binary_disables_cached_wheels(script, data, common_wheels): + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) # Seed the cache script.pip( - 'install', '--no-index', '-f', data.find_links, + 'install', '--no-index', '-f', data.find_links, '-f', common_wheels, 'upper') script.pip('uninstall', 'upper', '-y') res = script.pip( @@ -1107,7 +1106,7 @@ def test_double_install_fail(script, data): assert msg in result.stderr -def test_install_incompatible_python_requires(script): +def test_install_incompatible_python_requires(script, common_wheels): script.scratch_path.join("pkga").mkdir() pkga_path = script.scratch_path / 'pkga' pkga_path.join("setup.py").write(textwrap.dedent(""" @@ -1116,13 +1115,16 @@ def test_install_incompatible_python_requires(script): python_requires='<1.0', version='0.1') """)) - script.pip('install', 'setuptools>24.2') # This should not be needed + script.pip( + 'install', 'setuptools>24.2', # This should not be needed + '--no-index', '-f', common_wheels, + ) result = script.pip('install', pkga_path, expect_error=True) assert ("pkga requires Python '<1.0' " "but the running Python is ") in result.stderr -def test_install_incompatible_python_requires_editable(script): +def test_install_incompatible_python_requires_editable(script, common_wheels): script.scratch_path.join("pkga").mkdir() pkga_path = script.scratch_path / 'pkga' pkga_path.join("setup.py").write(textwrap.dedent(""" @@ -1131,7 +1133,10 @@ def test_install_incompatible_python_requires_editable(script): python_requires='<1.0', version='0.1') """)) - script.pip('install', 'setuptools>24.2') # This should not be needed + script.pip( + 'install', 'setuptools>24.2', # This should not be needed + '--no-index', '-f', common_wheels, + ) result = script.pip( 'install', '--editable=%s' % pkga_path, expect_error=True) assert ("pkga requires Python '<1.0' " @@ -1139,7 +1144,7 @@ def test_install_incompatible_python_requires_editable(script): @pytest.mark.network -def test_install_incompatible_python_requires_wheel(script): +def test_install_incompatible_python_requires_wheel(script, common_wheels): script.scratch_path.join("pkga").mkdir() pkga_path = script.scratch_path / 'pkga' pkga_path.join("setup.py").write(textwrap.dedent(""" @@ -1148,8 +1153,11 @@ def test_install_incompatible_python_requires_wheel(script): python_requires='<1.0', version='0.1') """)) - script.pip('install', 'setuptools>24.2') # This should not be needed - script.pip('install', 'wheel') + script.pip( + 'install', 'setuptools>24.2', # This should not be needed + '--no-index', '-f', common_wheels, + ) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) script.run( 'python', 'setup.py', 'bdist_wheel', '--universal', cwd=pkga_path) result = script.pip('install', './pkga/dist/pkga-0.1-py2.py3-none-any.whl', @@ -1158,7 +1166,7 @@ def test_install_incompatible_python_requires_wheel(script): "but the running Python is ") in result.stderr -def test_install_compatible_python_requires(script): +def test_install_compatible_python_requires(script, common_wheels): script.scratch_path.join("pkga").mkdir() pkga_path = script.scratch_path / 'pkga' pkga_path.join("setup.py").write(textwrap.dedent(""" @@ -1167,7 +1175,10 @@ def test_install_compatible_python_requires(script): python_requires='>1.0', version='0.1') """)) - script.pip('install', 'setuptools>24.2') # This should not be needed + script.pip( + 'install', 'setuptools>24.2', # This should not be needed + '--no-index', '-f', common_wheels, + ) res = script.pip('install', pkga_path, expect_error=True) assert "Successfully installed pkga-0.1" in res.stdout, res diff --git a/tests/functional/test_install_config.py b/tests/functional/test_install_config.py index 72438162a..da041af10 100644 --- a/tests/functional/test_install_config.py +++ b/tests/functional/test_install_config.py @@ -200,8 +200,9 @@ def test_options_from_venv_config(script, virtualenv): @pytest.mark.network -def test_install_no_binary_via_config_disables_cached_wheels(script, data): - script.pip('install', 'wheel') +def test_install_no_binary_via_config_disables_cached_wheels( + script, data, common_wheels): + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) config_file = tempfile.NamedTemporaryFile(mode='wt') script.environ['PIP_CONFIG_FILE'] = config_file.name config_file.write(textwrap.dedent("""\ diff --git a/tests/functional/test_install_reqs.py b/tests/functional/test_install_reqs.py index 7d8d9a66e..96544f2de 100644 --- a/tests/functional/test_install_reqs.py +++ b/tests/functional/test_install_reqs.py @@ -223,10 +223,10 @@ def test_install_local_with_subdirectory(script): @pytest.mark.network -def test_wheel_user_with_prefix_in_pydistutils_cfg(script, data, virtualenv): +def test_wheel_user_with_prefix_in_pydistutils_cfg( + script, data, virtualenv, common_wheels): # Make sure wheel is available in the virtualenv - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) virtualenv.system_site_packages = True homedir = script.environ["HOME"] script.scratch_path.join("bin").mkdir() @@ -235,8 +235,10 @@ def test_wheel_user_with_prefix_in_pydistutils_cfg(script, data, virtualenv): [install] prefix=%s""" % script.scratch_path)) - result = script.pip('install', '--user', '--no-index', '-f', - data.find_links, 'requiresupper') + result = script.pip( + 'install', '--user', '--no-index', + '-f', data.find_links, '-f', common_wheels, + 'requiresupper') # Check that we are really installing a wheel assert 'Running setup.py install for requiresupper' not in result.stdout assert 'installed requiresupper' in result.stdout @@ -339,7 +341,7 @@ def test_constrained_to_url_install_same_url(script, data): @pytest.mark.network -def test_double_install_spurious_hash_mismatch(script, tmpdir, data): +def test_double_install_spurious_hash_mismatch(script, tmpdir, common_wheels): """Make sure installing the same hashed sdist twice doesn't throw hash mismatch errors. @@ -349,14 +351,14 @@ def test_double_install_spurious_hash_mismatch(script, tmpdir, data): causes spurious mismatch errors. """ - script.pip('install', 'wheel') # Otherwise, it won't try to build wheels. - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + # Install wheel package, otherwise, it won't try to build wheels. + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) with requirements_file('simple==1.0 --hash=sha256:393043e672415891885c9a2a' '0929b1af95fb866d6ca016b42d2e6ce53619b653', tmpdir) as reqs_file: # Install a package (and build its wheel): result = script.pip_install_local( - '--find-links', data.find_links, + '--find-links', data.find_links, '-f', common_wheels, '-r', reqs_file.abspath, expect_error=False) assert 'Successfully installed simple-1.0' in str(result) diff --git a/tests/functional/test_install_wheel.py b/tests/functional/test_install_wheel.py index d5f15d5c7..d3a2caba2 100644 --- a/tests/functional/test_install_wheel.py +++ b/tests/functional/test_install_wheel.py @@ -115,11 +115,11 @@ def test_install_from_wheel_with_headers(script, data): @pytest.mark.network -def test_install_wheel_with_target(script, data): +def test_install_wheel_with_target(script, data, common_wheels): """ Test installing a wheel using pip install --target """ - script.pip('install', 'wheel') + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) target_dir = script.scratch_path / 'target' result = script.pip( 'install', 'simple.dist==0.1', '-t', target_dir, @@ -131,7 +131,7 @@ def test_install_wheel_with_target(script, data): @pytest.mark.network -def test_install_wheel_with_target_and_data_files(script, data): +def test_install_wheel_with_target_and_data_files(script, data, common_wheels): """ Test for issue #4092. It will be checked that a data_files specification in setup.py is handled correctly when a wheel is installed with the --target @@ -150,7 +150,7 @@ def test_install_wheel_with_target_and_data_files(script, data): ] ) """ - script.pip('install', 'wheel') + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) target_dir = script.scratch_path / 'prjwithdatafile' package = data.packages.join("prjwithdatafile-1.0-py2.py3-none-any.whl") result = script.pip('install', package, @@ -221,12 +221,12 @@ def test_install_from_wheel_no_deps(script, data): @pytest.mark.network -def test_install_user_wheel(script, virtualenv, data): +def test_install_user_wheel(script, virtualenv, data, common_wheels): """ Test user install from wheel (that has a script) """ virtualenv.system_site_packages = True - script.pip('install', 'wheel') + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) result = script.pip( 'install', 'has.script==1.0', '--user', '--no-index', '--find-links=' + data.find_links, diff --git a/tests/functional/test_wheel.py b/tests/functional/test_wheel.py index d5e05187a..c60e6cba9 100644 --- a/tests/functional/test_wheel.py +++ b/tests/functional/test_wheel.py @@ -20,34 +20,35 @@ def test_pip_wheel_fails_without_wheel(script, data): assert "'pip wheel' requires the 'wheel' package" in result.stderr -def test_wheel_exit_status_code_when_no_requirements(script): +def test_wheel_exit_status_code_when_no_requirements(script, common_wheels): """ Test wheel exit status code when no requirements specified """ - script.pip('install', 'wheel') + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) result = script.pip('wheel', expect_error=True) assert "You must give at least one requirement to wheel" in result.stderr assert result.returncode == ERROR -def test_wheel_exit_status_code_when_blank_requirements_file(script): +def test_wheel_exit_status_code_when_blank_requirements_file( + script, common_wheels): """ Test wheel exit status code when blank requirements file specified """ - script.pip('install', 'wheel') + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) script.scratch_path.join("blank.txt").write("\n") script.pip('wheel', '-r', 'blank.txt') @pytest.mark.network -def test_pip_wheel_success(script, data): +def test_pip_wheel_success(script, data, common_wheels): """ Test 'pip wheel' success. """ - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) result = script.pip( - 'wheel', '--no-index', '-f', data.find_links, 'simple==3.0', + 'wheel', '--no-index', '-f', data.find_links, '-f', common_wheels, + 'simple==3.0', ) wheel_file_name = 'simple-3.0-py%s-none-any.whl' % pyversion[0] wheel_file_path = script.scratch / wheel_file_name @@ -56,11 +57,11 @@ def test_pip_wheel_success(script, data): @pytest.mark.network -def test_pip_wheel_downloads_wheels(script, data): +def test_pip_wheel_downloads_wheels(script, data, common_wheels): """ Test 'pip wheel' downloads wheels """ - script.pip('install', 'wheel') + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) result = script.pip( 'wheel', '--no-index', '-f', data.find_links, 'simple.dist', ) @@ -71,27 +72,27 @@ def test_pip_wheel_downloads_wheels(script, data): @pytest.mark.network -def test_pip_wheel_builds_when_no_binary_set(script, data): - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) +def test_pip_wheel_builds_when_no_binary_set(script, data, common_wheels): + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) data.packages.join('simple-3.0-py2.py3-none-any.whl').touch() # Check that the wheel package is ignored res = script.pip( - 'wheel', '--no-index', '--no-binary', ':all:', '-f', data.find_links, + 'wheel', '--no-index', '--no-binary', ':all:', + '-f', data.find_links, '-f', common_wheels, 'simple==3.0') assert "Running setup.py bdist_wheel for simple" in str(res), str(res) @pytest.mark.network -def test_pip_wheel_builds_editable_deps(script, data): +def test_pip_wheel_builds_editable_deps(script, data, common_wheels): """ Test 'pip wheel' finds and builds dependencies of editables """ - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) editable_path = os.path.join(data.src, 'requires_simple') result = script.pip( - 'wheel', '--no-index', '-f', data.find_links, '-e', editable_path + 'wheel', '--no-index', '-f', data.find_links, '-f', common_wheels, + '-e', editable_path ) wheel_file_name = 'simple-1.0-py%s-none-any.whl' % pyversion[0] wheel_file_path = script.scratch / wheel_file_name @@ -99,15 +100,15 @@ def test_pip_wheel_builds_editable_deps(script, data): @pytest.mark.network -def test_pip_wheel_builds_editable(script, data): +def test_pip_wheel_builds_editable(script, data, common_wheels): """ Test 'pip wheel' builds an editable package """ - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) editable_path = os.path.join(data.src, 'simplewheel-1.0') result = script.pip( - 'wheel', '--no-index', '-f', data.find_links, '-e', editable_path + 'wheel', '--no-index', '-f', data.find_links, '-f', common_wheels, + '-e', editable_path ) wheel_file_name = 'simplewheel-1.0-py%s-none-any.whl' % pyversion[0] wheel_file_path = script.scratch / wheel_file_name @@ -115,14 +116,14 @@ def test_pip_wheel_builds_editable(script, data): @pytest.mark.network -def test_pip_wheel_fail(script, data): +def test_pip_wheel_fail(script, data, common_wheels): """ Test 'pip wheel' failure. """ - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) result = script.pip( - 'wheel', '--no-index', '-f', data.find_links, 'wheelbroken==0.1', + 'wheel', '--no-index', '-f', data.find_links, '-f', common_wheels, + 'wheelbroken==0.1', expect_error=True, ) wheel_file_name = 'wheelbroken-0.1-py%s-none-any.whl' % pyversion[0] @@ -137,16 +138,17 @@ def test_pip_wheel_fail(script, data): @pytest.mark.network -def test_no_clean_option_blocks_cleaning_after_wheel(script, data): +def test_no_clean_option_blocks_cleaning_after_wheel( + script, data, common_wheels): """ Test --no-clean option blocks cleaning after wheel build """ - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) build = script.venv_path / 'build' result = script.pip( 'wheel', '--no-clean', '--no-index', '--build', build, - '--find-links=%s' % data.find_links, 'simple', + '--find-links=%s' % data.find_links, '-f', common_wheels, + 'simple', expect_temp=True, ) build = build / 'simple' @@ -154,16 +156,16 @@ def test_no_clean_option_blocks_cleaning_after_wheel(script, data): @pytest.mark.network -def test_pip_wheel_source_deps(script, data): +def test_pip_wheel_source_deps(script, data, common_wheels): """ Test 'pip wheel' finds and builds source archive dependencies of wheels """ # 'requires_source' is a wheel that depends on the 'source' project - script.pip('install', 'wheel') - script.pip('download', 'setuptools', 'wheel', '-d', data.packages) + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) result = script.pip( - 'wheel', '--no-index', '-f', data.find_links, 'requires_source', + 'wheel', '--no-index', '-f', data.find_links, '-f', common_wheels, + 'requires_source', ) wheel_file_name = 'source-1.0-py%s-none-any.whl' % pyversion[0] wheel_file_path = script.scratch / wheel_file_name @@ -172,13 +174,14 @@ def test_pip_wheel_source_deps(script, data): @pytest.mark.network -def test_pip_wheel_fail_cause_of_previous_build_dir(script, data): +def test_pip_wheel_fail_cause_of_previous_build_dir( + script, data, common_wheels): """ Test when 'pip wheel' tries to install a package that has a previous build directory """ - script.pip('install', 'wheel') + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) # Given that I have a previous build dir of the `simple` package build = script.venv_path / 'build' / 'simple' @@ -198,9 +201,9 @@ def test_pip_wheel_fail_cause_of_previous_build_dir(script, data): @pytest.mark.network -def test_wheel_package_with_latin1_setup(script, data): +def test_wheel_package_with_latin1_setup(script, data, common_wheels): """Create a wheel from a package with latin-1 encoded setup.py.""" - script.pip('install', 'wheel') + script.pip('install', 'wheel', '--no-index', '-f', common_wheels) pkg_to_wheel = data.packages.join("SetupPyLatin1") result = script.pip('wheel', pkg_to_wheel) |