mirror of https://github.com/pypa/pip
Reduce reliance on .egg-info directories in test suite
Make more tests run with with_wheel and test that a .dist-info directory is created.
This commit is contained in:
parent
89a51a6fef
commit
ccdfa74d79
|
@ -188,7 +188,8 @@ def test_pep518_forkbombs(script, data, common_wheels, command, package):
|
|||
|
||||
@pytest.mark.network
|
||||
def test_pip_second_command_line_interface_works(
|
||||
script, pip_src, data, common_wheels, deprecated_python):
|
||||
script, pip_src, data, common_wheels, deprecated_python, with_wheel
|
||||
):
|
||||
"""
|
||||
Check if ``pip<PYVERSION>`` commands behaves equally
|
||||
"""
|
||||
|
@ -204,12 +205,12 @@ def test_pip_second_command_line_interface_works(
|
|||
args.extend(['install', 'INITools==0.2'])
|
||||
args.extend(['-f', data.packages])
|
||||
result = script.run(*args, **kwargs)
|
||||
egg_info_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'INITools-0.2-py{pyversion}.egg-info'.format(**globals())
|
||||
'INITools-0.2.dist-info'
|
||||
)
|
||||
initools_folder = script.site_packages / 'initools'
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
result.did_create(initools_folder)
|
||||
|
||||
|
||||
|
@ -231,17 +232,17 @@ def test_install_exit_status_code_when_blank_requirements_file(script):
|
|||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_basic_install_from_pypi(script):
|
||||
def test_basic_install_from_pypi(script, with_wheel):
|
||||
"""
|
||||
Test installing a package from PyPI.
|
||||
"""
|
||||
result = script.pip('install', 'INITools==0.2')
|
||||
egg_info_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'INITools-0.2-py{pyversion}.egg-info'.format(**globals())
|
||||
'INITools-0.2.dist-info'
|
||||
)
|
||||
initools_folder = script.site_packages / 'initools'
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
result.did_create(initools_folder)
|
||||
|
||||
# Should not display where it's looking for files
|
||||
|
@ -406,7 +407,9 @@ def test_vcs_url_urlquote_normalization(script, tmpdir):
|
|||
|
||||
|
||||
@pytest.mark.parametrize("resolver", ["", "--use-feature=2020-resolver"])
|
||||
def test_basic_install_from_local_directory(script, data, resolver):
|
||||
def test_basic_install_from_local_directory(
|
||||
script, data, resolver, with_wheel
|
||||
):
|
||||
"""
|
||||
Test installing from a local directory.
|
||||
"""
|
||||
|
@ -417,12 +420,12 @@ def test_basic_install_from_local_directory(script, data, resolver):
|
|||
args.append(to_install)
|
||||
result = script.pip(*args)
|
||||
fspkg_folder = script.site_packages / 'fspkg'
|
||||
egg_info_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'FSPkg-0.1.dev0-py{pyversion}.egg-info'.format(**globals())
|
||||
'FSPkg-0.1.dev0.dist-info'
|
||||
)
|
||||
result.did_create(fspkg_folder)
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("test_type,editable", [
|
||||
|
@ -433,13 +436,15 @@ def test_basic_install_from_local_directory(script, data, resolver):
|
|||
("embedded_rel_path", False),
|
||||
("embedded_rel_path", True),
|
||||
])
|
||||
def test_basic_install_relative_directory(script, data, test_type, editable):
|
||||
def test_basic_install_relative_directory(
|
||||
script, data, test_type, editable, with_wheel
|
||||
):
|
||||
"""
|
||||
Test installing a requirement using a relative path.
|
||||
"""
|
||||
egg_info_file = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'FSPkg-0.1.dev0-py{pyversion}.egg-info'.format(**globals())
|
||||
'FSPkg-0.1.dev0.dist-info'
|
||||
)
|
||||
egg_link_file = (
|
||||
script.site_packages / 'FSPkg.egg-link'
|
||||
|
@ -465,7 +470,7 @@ def test_basic_install_relative_directory(script, data, test_type, editable):
|
|||
if not editable:
|
||||
result = script.pip('install', req_path,
|
||||
cwd=script.scratch_path)
|
||||
result.did_create(egg_info_file)
|
||||
result.did_create(dist_info_folder)
|
||||
result.did_create(package_folder)
|
||||
else:
|
||||
# Editable install.
|
||||
|
@ -562,29 +567,32 @@ def test_hashed_install_failure_later_flag(script, tmpdir):
|
|||
|
||||
|
||||
def test_install_from_local_directory_with_symlinks_to_directories(
|
||||
script, data):
|
||||
script, data, with_wheel
|
||||
):
|
||||
"""
|
||||
Test installing from a local directory containing symlinks to directories.
|
||||
"""
|
||||
to_install = data.packages.joinpath("symlinks")
|
||||
result = script.pip('install', to_install)
|
||||
pkg_folder = script.site_packages / 'symlinks'
|
||||
egg_info_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'symlinks-0.1.dev0-py{pyversion}.egg-info'.format(**globals())
|
||||
'symlinks-0.1.dev0.dist-info'
|
||||
)
|
||||
result.did_create(pkg_folder)
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
@pytest.mark.skipif("sys.platform == 'win32' or sys.version_info < (3,)")
|
||||
def test_install_from_local_directory_with_socket_file(script, data, tmpdir):
|
||||
def test_install_from_local_directory_with_socket_file(
|
||||
script, data, tmpdir, with_wheel
|
||||
):
|
||||
"""
|
||||
Test installing from a local directory containing a socket file.
|
||||
"""
|
||||
egg_info_file = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
"FSPkg-0.1.dev0-py{pyversion}.egg-info".format(**globals())
|
||||
"FSPkg-0.1.dev0.dist-info"
|
||||
)
|
||||
package_folder = script.site_packages / "fspkg"
|
||||
to_copy = data.packages.joinpath("FSPkg")
|
||||
|
@ -597,7 +605,7 @@ def test_install_from_local_directory_with_socket_file(script, data, tmpdir):
|
|||
|
||||
result = script.pip("install", "--verbose", to_install)
|
||||
result.did_create(package_folder)
|
||||
result.did_create(egg_info_file)
|
||||
result.did_create(dist_info_folder)
|
||||
assert str(socket_file_path) in result.stderr
|
||||
|
||||
|
||||
|
@ -673,7 +681,7 @@ def test_upgrade_argparse_shadowed(script):
|
|||
assert "Not uninstalling argparse" not in result.stdout
|
||||
|
||||
|
||||
def test_install_curdir(script, data):
|
||||
def test_install_curdir(script, data, with_wheel):
|
||||
"""
|
||||
Test installing current directory ('.').
|
||||
"""
|
||||
|
@ -684,27 +692,27 @@ def test_install_curdir(script, data):
|
|||
rmtree(egg_info)
|
||||
result = script.pip('install', curdir, cwd=run_from)
|
||||
fspkg_folder = script.site_packages / 'fspkg'
|
||||
egg_info_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'FSPkg-0.1.dev0-py{pyversion}.egg-info'.format(**globals())
|
||||
'FSPkg-0.1.dev0.dist-info'
|
||||
)
|
||||
result.did_create(fspkg_folder)
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_install_pardir(script, data):
|
||||
def test_install_pardir(script, data, with_wheel):
|
||||
"""
|
||||
Test installing parent directory ('..').
|
||||
"""
|
||||
run_from = data.packages.joinpath("FSPkg", "fspkg")
|
||||
result = script.pip('install', pardir, cwd=run_from)
|
||||
fspkg_folder = script.site_packages / 'fspkg'
|
||||
egg_info_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'FSPkg-0.1.dev0-py{pyversion}.egg-info'.format(**globals())
|
||||
'FSPkg-0.1.dev0.dist-info'
|
||||
)
|
||||
result.did_create(fspkg_folder)
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
|
@ -765,17 +773,17 @@ def test_install_global_option_using_editable(script, tmpdir):
|
|||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_install_package_with_same_name_in_curdir(script):
|
||||
def test_install_package_with_same_name_in_curdir(script, with_wheel):
|
||||
"""
|
||||
Test installing a package with the same name of a local folder
|
||||
"""
|
||||
script.scratch_path.joinpath("mock==0.6").mkdir()
|
||||
result = script.pip('install', 'mock==0.6')
|
||||
egg_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'mock-0.6.0-py{pyversion}.egg-info'.format(**globals())
|
||||
'mock-0.6.0.dist-info'
|
||||
)
|
||||
result.did_create(egg_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
mock100_setup_py = textwrap.dedent('''\
|
||||
|
@ -784,7 +792,7 @@ mock100_setup_py = textwrap.dedent('''\
|
|||
version='100.1')''')
|
||||
|
||||
|
||||
def test_install_folder_using_dot_slash(script):
|
||||
def test_install_folder_using_dot_slash(script, with_wheel):
|
||||
"""
|
||||
Test installing a folder using pip install ./foldername
|
||||
"""
|
||||
|
@ -792,14 +800,14 @@ def test_install_folder_using_dot_slash(script):
|
|||
pkg_path = script.scratch_path / 'mock'
|
||||
pkg_path.joinpath("setup.py").write_text(mock100_setup_py)
|
||||
result = script.pip('install', './mock')
|
||||
egg_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'mock-100.1-py{pyversion}.egg-info'.format(**globals())
|
||||
'mock-100.1.dist-info'
|
||||
)
|
||||
result.did_create(egg_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_install_folder_using_slash_in_the_end(script):
|
||||
def test_install_folder_using_slash_in_the_end(script, with_wheel):
|
||||
r"""
|
||||
Test installing a folder using pip install foldername/ or foldername\
|
||||
"""
|
||||
|
@ -807,14 +815,14 @@ def test_install_folder_using_slash_in_the_end(script):
|
|||
pkg_path = script.scratch_path / 'mock'
|
||||
pkg_path.joinpath("setup.py").write_text(mock100_setup_py)
|
||||
result = script.pip('install', 'mock' + os.path.sep)
|
||||
egg_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'mock-100.1-py{pyversion}.egg-info'.format(**globals())
|
||||
'mock-100.1.dist-info'
|
||||
)
|
||||
result.did_create(egg_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_install_folder_using_relative_path(script):
|
||||
def test_install_folder_using_relative_path(script, with_wheel):
|
||||
"""
|
||||
Test installing a folder using pip install folder1/folder2
|
||||
"""
|
||||
|
@ -823,29 +831,29 @@ def test_install_folder_using_relative_path(script):
|
|||
pkg_path = script.scratch_path / 'initools' / 'mock'
|
||||
pkg_path.joinpath("setup.py").write_text(mock100_setup_py)
|
||||
result = script.pip('install', Path('initools') / 'mock')
|
||||
egg_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'mock-100.1-py{pyversion}.egg-info'.format(**globals())
|
||||
'mock-100.1.dist-info'.format(**globals())
|
||||
)
|
||||
result.did_create(egg_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_install_package_which_contains_dev_in_name(script):
|
||||
def test_install_package_which_contains_dev_in_name(script, with_wheel):
|
||||
"""
|
||||
Test installing package from PyPI which contains 'dev' in name
|
||||
"""
|
||||
result = script.pip('install', 'django-devserver==0.0.4')
|
||||
devserver_folder = script.site_packages / 'devserver'
|
||||
egg_info_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'django_devserver-0.0.4-py{pyversion}.egg-info'.format(**globals())
|
||||
'django_devserver-0.0.4.dist-info'
|
||||
)
|
||||
result.did_create(devserver_folder)
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_install_package_with_target(script):
|
||||
def test_install_package_with_target(script, with_wheel):
|
||||
"""
|
||||
Test installing a package using pip install --target
|
||||
"""
|
||||
|
@ -863,10 +871,11 @@ def test_install_package_with_target(script):
|
|||
result = script.pip_install_local('--upgrade', '-t',
|
||||
target_dir, "simple==2.0")
|
||||
result.did_update(Path('scratch') / 'target' / 'simple')
|
||||
egg_folder = (
|
||||
dist_info_folder = (
|
||||
Path('scratch') / 'target' /
|
||||
'simple-2.0-py{pyversion}.egg-info'.format(**globals()))
|
||||
result.did_create(egg_folder)
|
||||
'simple-2.0.dist-info'
|
||||
)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
# Test install and upgrade of single-module package
|
||||
result = script.pip_install_local('-t', target_dir, 'singlemodule==0.0.0')
|
||||
|
@ -990,7 +999,7 @@ def test_install_with_target_and_scripts_no_warning(script, with_wheel):
|
|||
assert "--no-warn-script-location" not in result.stderr, str(result)
|
||||
|
||||
|
||||
def test_install_package_with_root(script, data):
|
||||
def test_install_package_with_root(script, data, with_wheel):
|
||||
"""
|
||||
Test installing a package using pip install --root
|
||||
"""
|
||||
|
@ -1001,7 +1010,7 @@ def test_install_package_with_root(script, data):
|
|||
)
|
||||
normal_install_path = (
|
||||
script.base_path / script.site_packages /
|
||||
'simple-1.0-py{pyversion}.egg-info'.format(**globals())
|
||||
'simple-1.0.dist-info'
|
||||
)
|
||||
# use distutils to change the root exactly how the --root option does it
|
||||
from distutils.util import change_root
|
||||
|
@ -1029,6 +1038,7 @@ def test_install_package_with_prefix(script, data):
|
|||
rel_prefix_path = script.scratch / 'prefix'
|
||||
install_path = (
|
||||
distutils.sysconfig.get_python_lib(prefix=rel_prefix_path) /
|
||||
# we still test for egg-info because no-binary implies setup.py install
|
||||
'simple-1.0-py{}.egg-info'.format(pyversion)
|
||||
)
|
||||
result.did_create(install_path)
|
||||
|
@ -1109,7 +1119,7 @@ def test_install_package_with_latin1_setup(script, data):
|
|||
script.pip('install', to_install)
|
||||
|
||||
|
||||
def test_url_req_case_mismatch_no_index(script, data):
|
||||
def test_url_req_case_mismatch_no_index(script, data, with_wheel):
|
||||
"""
|
||||
tar ball url requirements (with no egg fragment), that happen to have upper
|
||||
case project names, should be considered equal to later requirements that
|
||||
|
@ -1124,15 +1134,15 @@ def test_url_req_case_mismatch_no_index(script, data):
|
|||
)
|
||||
|
||||
# only Upper-1.0.tar.gz should get installed.
|
||||
egg_folder = script.site_packages / \
|
||||
'Upper-1.0-py{pyversion}.egg-info'.format(**globals())
|
||||
result.did_create(egg_folder)
|
||||
egg_folder = script.site_packages / \
|
||||
'Upper-2.0-py{pyversion}.egg-info'.format(**globals())
|
||||
result.did_not_create(egg_folder)
|
||||
dist_info_folder = script.site_packages / \
|
||||
'Upper-1.0.dist-info'
|
||||
result.did_create(dist_info_folder)
|
||||
dist_info_folder = script.site_packages / \
|
||||
'Upper-2.0.dist-info'
|
||||
result.did_not_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_url_req_case_mismatch_file_index(script, data):
|
||||
def test_url_req_case_mismatch_file_index(script, data, with_wheel):
|
||||
"""
|
||||
tar ball url requirements (with no egg fragment), that happen to have upper
|
||||
case project names, should be considered equal to later requirements that
|
||||
|
@ -1153,15 +1163,15 @@ def test_url_req_case_mismatch_file_index(script, data):
|
|||
)
|
||||
|
||||
# only Upper-1.0.tar.gz should get installed.
|
||||
egg_folder = script.site_packages / \
|
||||
'Dinner-1.0-py{pyversion}.egg-info'.format(**globals())
|
||||
result.did_create(egg_folder)
|
||||
egg_folder = script.site_packages / \
|
||||
'Dinner-2.0-py{pyversion}.egg-info'.format(**globals())
|
||||
result.did_not_create(egg_folder)
|
||||
dist_info_folder = script.site_packages / \
|
||||
'Dinner-1.0.dist-info'
|
||||
result.did_create(dist_info_folder)
|
||||
dist_info_folder = script.site_packages / \
|
||||
'Dinner-2.0.dist-info'
|
||||
result.did_not_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_url_incorrect_case_no_index(script, data):
|
||||
def test_url_incorrect_case_no_index(script, data, with_wheel):
|
||||
"""
|
||||
Same as test_url_req_case_mismatch_no_index, except testing for the case
|
||||
where the incorrect case is given in the name of the package to install
|
||||
|
@ -1172,15 +1182,15 @@ def test_url_incorrect_case_no_index(script, data):
|
|||
)
|
||||
|
||||
# only Upper-2.0.tar.gz should get installed.
|
||||
egg_folder = script.site_packages / \
|
||||
'Upper-1.0-py{pyversion}.egg-info'.format(**globals())
|
||||
result.did_not_create(egg_folder)
|
||||
egg_folder = script.site_packages / \
|
||||
'Upper-2.0-py{pyversion}.egg-info'.format(**globals())
|
||||
result.did_create(egg_folder)
|
||||
dist_info_folder = script.site_packages / \
|
||||
'Upper-1.0.dist-info'
|
||||
result.did_not_create(dist_info_folder)
|
||||
dist_info_folder = script.site_packages / \
|
||||
'Upper-2.0.dist-info'
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_url_incorrect_case_file_index(script, data):
|
||||
def test_url_incorrect_case_file_index(script, data, with_wheel):
|
||||
"""
|
||||
Same as test_url_req_case_mismatch_file_index, except testing for the case
|
||||
where the incorrect case is given in the name of the package to install
|
||||
|
@ -1192,12 +1202,12 @@ def test_url_incorrect_case_file_index(script, data):
|
|||
)
|
||||
|
||||
# only Upper-2.0.tar.gz should get installed.
|
||||
egg_folder = script.site_packages / \
|
||||
'Dinner-1.0-py{pyversion}.egg-info'.format(**globals())
|
||||
result.did_not_create(egg_folder)
|
||||
egg_folder = script.site_packages / \
|
||||
'Dinner-2.0-py{pyversion}.egg-info'.format(**globals())
|
||||
result.did_create(egg_folder)
|
||||
dist_info_folder = script.site_packages / \
|
||||
'Dinner-1.0.dist-info'
|
||||
result.did_not_create(dist_info_folder)
|
||||
dist_info_folder = script.site_packages / \
|
||||
'Dinner-2.0.dist-info'
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
# Should show index-url location in output
|
||||
assert "Looking in indexes: " in result.stdout
|
||||
|
|
|
@ -3,10 +3,8 @@ import textwrap
|
|||
|
||||
from pip._vendor.six.moves.urllib import parse as urllib_parse
|
||||
|
||||
from tests.lib import pyversion
|
||||
|
||||
|
||||
def test_find_links_relative_path(script, data):
|
||||
def test_find_links_relative_path(script, data, with_wheel):
|
||||
"""Test find-links as a relative path."""
|
||||
result = script.pip(
|
||||
'install',
|
||||
|
@ -16,15 +14,15 @@ def test_find_links_relative_path(script, data):
|
|||
'packages/',
|
||||
cwd=data.root,
|
||||
)
|
||||
egg_info_folder = (
|
||||
script.site_packages / 'parent-0.1-py{}.egg-info'.format(pyversion)
|
||||
dist_info_folder = (
|
||||
script.site_packages / 'parent-0.1.dist-info'
|
||||
)
|
||||
initools_folder = script.site_packages / 'parent'
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
result.did_create(initools_folder)
|
||||
|
||||
|
||||
def test_find_links_requirements_file_relative_path(script, data):
|
||||
def test_find_links_requirements_file_relative_path(script, data, with_wheel):
|
||||
"""Test find-links as a relative path to a reqs file."""
|
||||
script.scratch_path.joinpath("test-req.txt").write_text(textwrap.dedent("""
|
||||
--no-index
|
||||
|
@ -37,27 +35,27 @@ def test_find_links_requirements_file_relative_path(script, data):
|
|||
script.scratch_path / "test-req.txt",
|
||||
cwd=data.root,
|
||||
)
|
||||
egg_info_folder = (
|
||||
script.site_packages / 'parent-0.1-py{}.egg-info'.format(pyversion)
|
||||
dist_info_folder = (
|
||||
script.site_packages / 'parent-0.1.dist-info'
|
||||
)
|
||||
initools_folder = script.site_packages / 'parent'
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
result.did_create(initools_folder)
|
||||
|
||||
|
||||
def test_install_from_file_index_hash_link(script, data):
|
||||
def test_install_from_file_index_hash_link(script, data, with_wheel):
|
||||
"""
|
||||
Test that a pkg can be installed from a file:// index using a link with a
|
||||
hash
|
||||
"""
|
||||
result = script.pip('install', '-i', data.index_url(), 'simple==1.0')
|
||||
egg_info_folder = (
|
||||
script.site_packages / 'simple-1.0-py{}.egg-info'.format(pyversion)
|
||||
dist_info_folder = (
|
||||
script.site_packages / 'simple-1.0.dist-info'
|
||||
)
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_file_index_url_quoting(script, data):
|
||||
def test_file_index_url_quoting(script, data, with_wheel):
|
||||
"""
|
||||
Test url quoting of file index url with a space
|
||||
"""
|
||||
|
@ -67,5 +65,5 @@ def test_file_index_url_quoting(script, data):
|
|||
)
|
||||
result.did_create(script.site_packages / 'simple')
|
||||
result.did_create(
|
||||
script.site_packages / 'simple-1.0-py{}.egg-info'.format(pyversion)
|
||||
script.site_packages / 'simple-1.0.dist-info'
|
||||
)
|
||||
|
|
|
@ -10,7 +10,6 @@ from tests.lib import (
|
|||
create_basic_wheel_for_package,
|
||||
need_svn,
|
||||
path_to_url,
|
||||
pyversion,
|
||||
requirements_file,
|
||||
)
|
||||
from tests.lib.local_repos import local_checkout
|
||||
|
@ -63,7 +62,7 @@ def arg_recording_sdist_maker(script):
|
|||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_requirements_file(script):
|
||||
def test_requirements_file(script, with_wheel):
|
||||
"""
|
||||
Test installing from a requirements file.
|
||||
|
||||
|
@ -78,12 +77,12 @@ def test_requirements_file(script):
|
|||
'install', '-r', script.scratch_path / 'initools-req.txt'
|
||||
)
|
||||
result.did_create(
|
||||
script.site_packages / 'INITools-0.2-py{}.egg-info'.format(pyversion)
|
||||
script.site_packages / 'INITools-0.2.dist-info'
|
||||
)
|
||||
result.did_create(script.site_packages / 'initools')
|
||||
assert result.files_created[script.site_packages / other_lib_name].dir
|
||||
fn = '{}-{}-py{}.egg-info'.format(
|
||||
other_lib_name, other_lib_version, pyversion)
|
||||
fn = '{}-{}.dist-info'.format(
|
||||
other_lib_name, other_lib_version)
|
||||
assert result.files_created[script.site_packages / fn].dir
|
||||
|
||||
|
||||
|
@ -113,15 +112,17 @@ def test_schema_check_in_requirements_file(script):
|
|||
("embedded_rel_path", False),
|
||||
("embedded_rel_path", True),
|
||||
])
|
||||
def test_relative_requirements_file(script, data, test_type, editable):
|
||||
def test_relative_requirements_file(
|
||||
script, data, test_type, editable, with_wheel
|
||||
):
|
||||
"""
|
||||
Test installing from a requirements file with a relative path. For path
|
||||
URLs, use an egg= definition.
|
||||
|
||||
"""
|
||||
egg_info_file = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'FSPkg-0.1.dev0-py{pyversion}.egg-info'.format(**globals())
|
||||
'FSPkg-0.1.dev0.dist-info'
|
||||
)
|
||||
egg_link_file = (
|
||||
script.site_packages / 'FSPkg.egg-link'
|
||||
|
@ -148,7 +149,7 @@ def test_relative_requirements_file(script, data, test_type, editable):
|
|||
script.scratch_path) as reqs_file:
|
||||
result = script.pip('install', '-vvv', '-r', reqs_file.name,
|
||||
cwd=script.scratch_path)
|
||||
result.did_create(egg_info_file)
|
||||
result.did_create(dist_info_folder)
|
||||
result.did_create(package_folder)
|
||||
else:
|
||||
with requirements_file('-e ' + req_path + '\n',
|
||||
|
@ -160,7 +161,7 @@ def test_relative_requirements_file(script, data, test_type, editable):
|
|||
|
||||
@pytest.mark.network
|
||||
@need_svn
|
||||
def test_multiple_requirements_files(script, tmpdir):
|
||||
def test_multiple_requirements_files(script, tmpdir, with_wheel):
|
||||
"""
|
||||
Test installing from multiple nested requirements files.
|
||||
|
||||
|
@ -184,8 +185,7 @@ def test_multiple_requirements_files(script, tmpdir):
|
|||
'install', '-r', script.scratch_path / 'initools-req.txt'
|
||||
)
|
||||
assert result.files_created[script.site_packages / other_lib_name].dir
|
||||
fn = '{other_lib_name}-{other_lib_version}-py{pyversion}.egg-info'.format(
|
||||
pyversion=pyversion, **locals())
|
||||
fn = '{other_lib_name}-{other_lib_version}.dist-info'.format(**locals())
|
||||
assert result.files_created[script.site_packages / fn].dir
|
||||
result.did_create(script.venv / 'src' / 'initools')
|
||||
|
||||
|
|
|
@ -38,7 +38,8 @@ def test_invalid_upgrade_strategy_causes_error(script):
|
|||
|
||||
def test_only_if_needed_does_not_upgrade_deps_when_satisfied(
|
||||
script,
|
||||
use_new_resolver
|
||||
use_new_resolver,
|
||||
with_wheel
|
||||
):
|
||||
"""
|
||||
It doesn't upgrade a dependency if it already satisfies the requirements.
|
||||
|
@ -50,13 +51,11 @@ def test_only_if_needed_does_not_upgrade_deps_when_satisfied(
|
|||
)
|
||||
|
||||
assert (
|
||||
(script.site_packages / 'require_simple-1.0-py{pyversion}.egg-info'
|
||||
.format(**globals()))
|
||||
(script.site_packages / 'require_simple-1.0.dist-info')
|
||||
not in result.files_deleted
|
||||
), "should have installed require_simple==1.0"
|
||||
assert (
|
||||
(script.site_packages / 'simple-2.0-py{pyversion}.egg-info'
|
||||
.format(**globals()))
|
||||
(script.site_packages / 'simple-2.0.dist-info')
|
||||
not in result.files_deleted
|
||||
), "should not have uninstalled simple==2.0"
|
||||
|
||||
|
@ -68,7 +67,9 @@ def test_only_if_needed_does_not_upgrade_deps_when_satisfied(
|
|||
), "did not print correct message for not-upgraded requirement"
|
||||
|
||||
|
||||
def test_only_if_needed_does_upgrade_deps_when_no_longer_satisfied(script):
|
||||
def test_only_if_needed_does_upgrade_deps_when_no_longer_satisfied(
|
||||
script, with_wheel
|
||||
):
|
||||
"""
|
||||
It does upgrade a dependency if it no longer satisfies the requirements.
|
||||
|
||||
|
@ -79,25 +80,26 @@ def test_only_if_needed_does_upgrade_deps_when_no_longer_satisfied(script):
|
|||
)
|
||||
|
||||
assert (
|
||||
(script.site_packages / 'require_simple-1.0-py{pyversion}.egg-info'
|
||||
.format(**globals()))
|
||||
(script.site_packages / 'require_simple-1.0.dist-info')
|
||||
not in result.files_deleted
|
||||
), "should have installed require_simple==1.0"
|
||||
expected = (
|
||||
script.site_packages /
|
||||
'simple-3.0-py{pyversion}.egg-info'.format(**globals())
|
||||
'simple-3.0.dist-info'
|
||||
)
|
||||
result.did_create(expected, message="should have installed simple==3.0")
|
||||
expected = (
|
||||
script.site_packages /
|
||||
'simple-1.0-py{pyversion}.egg-info'.format(**globals())
|
||||
'simple-1.0.dist-info'
|
||||
)
|
||||
assert (
|
||||
expected in result.files_deleted
|
||||
), "should have uninstalled simple==1.0"
|
||||
|
||||
|
||||
def test_eager_does_upgrade_dependecies_when_currently_satisfied(script):
|
||||
def test_eager_does_upgrade_dependecies_when_currently_satisfied(
|
||||
script, with_wheel
|
||||
):
|
||||
"""
|
||||
It does upgrade a dependency even if it already satisfies the requirements.
|
||||
|
||||
|
@ -109,17 +111,19 @@ def test_eager_does_upgrade_dependecies_when_currently_satisfied(script):
|
|||
|
||||
assert (
|
||||
(script.site_packages /
|
||||
'require_simple-1.0-py{pyversion}.egg-info'.format(**globals()))
|
||||
'require_simple-1.0.dist-info')
|
||||
not in result.files_deleted
|
||||
), "should have installed require_simple==1.0"
|
||||
assert (
|
||||
(script.site_packages /
|
||||
'simple-2.0-py{pyversion}.egg-info'.format(**globals()))
|
||||
'simple-2.0.dist-info')
|
||||
in result.files_deleted
|
||||
), "should have uninstalled simple==2.0"
|
||||
|
||||
|
||||
def test_eager_does_upgrade_dependecies_when_no_longer_satisfied(script):
|
||||
def test_eager_does_upgrade_dependecies_when_no_longer_satisfied(
|
||||
script, with_wheel
|
||||
):
|
||||
"""
|
||||
It does upgrade a dependency if it no longer satisfies the requirements.
|
||||
|
||||
|
@ -130,24 +134,21 @@ def test_eager_does_upgrade_dependecies_when_no_longer_satisfied(script):
|
|||
)
|
||||
|
||||
assert (
|
||||
(script.site_packages /
|
||||
'require_simple-1.0-py{pyversion}.egg-info'.format(**globals()))
|
||||
(script.site_packages / 'require_simple-1.0.dist-info')
|
||||
not in result.files_deleted
|
||||
), "should have installed require_simple==1.0"
|
||||
result.did_create(
|
||||
script.site_packages /
|
||||
'simple-3.0-py{pyversion}.egg-info'.format(**globals()),
|
||||
script.site_packages / 'simple-3.0.dist-info',
|
||||
message="should have installed simple==3.0"
|
||||
)
|
||||
assert (
|
||||
script.site_packages /
|
||||
'simple-1.0-py{pyversion}.egg-info'.format(**globals())
|
||||
script.site_packages / 'simple-1.0.dist-info'
|
||||
in result.files_deleted
|
||||
), "should have uninstalled simple==1.0"
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_upgrade_to_specific_version(script):
|
||||
def test_upgrade_to_specific_version(script, with_wheel):
|
||||
"""
|
||||
It does upgrade to specific version requested.
|
||||
|
||||
|
@ -158,18 +159,16 @@ def test_upgrade_to_specific_version(script):
|
|||
'pip install with specific version did not upgrade'
|
||||
)
|
||||
assert (
|
||||
script.site_packages / 'INITools-0.1-py{pyversion}.egg-info'
|
||||
.format(**globals())
|
||||
script.site_packages / 'INITools-0.1.dist-info'
|
||||
in result.files_deleted
|
||||
)
|
||||
result.did_create(
|
||||
script.site_packages / 'INITools-0.2-py{pyversion}.egg-info'
|
||||
.format(**globals())
|
||||
script.site_packages / 'INITools-0.2.dist-info'
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_upgrade_if_requested(script):
|
||||
def test_upgrade_if_requested(script, with_wheel):
|
||||
"""
|
||||
And it does upgrade if requested.
|
||||
|
||||
|
@ -179,7 +178,7 @@ def test_upgrade_if_requested(script):
|
|||
assert result.files_created, 'pip install --upgrade did not upgrade'
|
||||
result.did_not_create(
|
||||
script.site_packages /
|
||||
'INITools-0.1-py{pyversion}.egg-info'.format(**globals())
|
||||
'INITools-0.1.dist-info'
|
||||
)
|
||||
|
||||
|
||||
|
@ -327,7 +326,7 @@ def test_uninstall_rollback(script, data):
|
|||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_should_not_install_always_from_cache(script):
|
||||
def test_should_not_install_always_from_cache(script, with_wheel):
|
||||
"""
|
||||
If there is an old cached package, pip should download the newer version
|
||||
Related to issue #175
|
||||
|
@ -337,16 +336,16 @@ def test_should_not_install_always_from_cache(script):
|
|||
result = script.pip('install', 'INITools==0.1')
|
||||
result.did_not_create(
|
||||
script.site_packages /
|
||||
'INITools-0.2-py{pyversion}.egg-info'.format(**globals())
|
||||
'INITools-0.2.dist-info'
|
||||
)
|
||||
result.did_create(
|
||||
script.site_packages /
|
||||
'INITools-0.1-py{pyversion}.egg-info'.format(**globals())
|
||||
'INITools-0.1.dist-info'
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_install_with_ignoreinstalled_requested(script):
|
||||
def test_install_with_ignoreinstalled_requested(script, with_wheel):
|
||||
"""
|
||||
Test old conflicting package is completely ignored
|
||||
"""
|
||||
|
@ -356,11 +355,11 @@ def test_install_with_ignoreinstalled_requested(script):
|
|||
# both the old and new metadata should be present.
|
||||
assert os.path.exists(
|
||||
script.site_packages_path /
|
||||
'INITools-0.1-py{pyversion}.egg-info'.format(**globals())
|
||||
'INITools-0.1.dist-info'
|
||||
)
|
||||
assert os.path.exists(
|
||||
script.site_packages_path /
|
||||
'INITools-0.3-py{pyversion}.egg-info'.format(**globals())
|
||||
'INITools-0.3.dist-info'
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -115,6 +115,7 @@ class Tests_UserSite:
|
|||
'install', '--user', 'INITools==0.1', '--no-binary=:all:')
|
||||
|
||||
# usersite has 0.1
|
||||
# we still test for egg-info because no-binary implies setup.py install
|
||||
egg_info_folder = (
|
||||
script.user_site /
|
||||
'INITools-0.1-py{pyversion}.egg-info'.format(**globals())
|
||||
|
@ -142,6 +143,7 @@ class Tests_UserSite:
|
|||
'install', '--user', 'INITools==0.1', '--no-binary=:all:')
|
||||
|
||||
# usersite has 0.1
|
||||
# we still test for egg-info because no-binary implies setup.py install
|
||||
egg_info_folder = (
|
||||
script.user_site /
|
||||
'INITools-0.1-py{pyversion}.egg-info'.format(**globals())
|
||||
|
@ -173,6 +175,7 @@ class Tests_UserSite:
|
|||
'install', '--user', '--upgrade', 'INITools', '--no-binary=:all:')
|
||||
|
||||
# usersite has 0.3.1
|
||||
# we still test for egg-info because no-binary implies setup.py install
|
||||
egg_info_folder = (
|
||||
script.user_site /
|
||||
'INITools-0.3.1-py{pyversion}.egg-info'.format(**globals())
|
||||
|
@ -207,6 +210,7 @@ class Tests_UserSite:
|
|||
'install', '--user', 'INITools==0.1', '--no-binary=:all:')
|
||||
|
||||
# usersite has 0.1
|
||||
# we still test for egg-info because no-binary implies setup.py install
|
||||
egg_info_folder = (
|
||||
script.user_site /
|
||||
'INITools-0.1-py{pyversion}.egg-info'.format(**globals())
|
||||
|
|
|
@ -160,7 +160,7 @@ def test_install_editable_from_git_with_https(script, tmpdir):
|
|||
|
||||
|
||||
@pytest.mark.network
|
||||
def test_install_noneditable_git(script, tmpdir):
|
||||
def test_install_noneditable_git(script, tmpdir, with_wheel):
|
||||
"""
|
||||
Test installing from a non-editable git URL with a given tag.
|
||||
"""
|
||||
|
@ -169,14 +169,14 @@ def test_install_noneditable_git(script, tmpdir):
|
|||
'git+https://github.com/pypa/pip-test-package.git'
|
||||
'@0.1.1#egg=pip-test-package'
|
||||
)
|
||||
egg_info_folder = (
|
||||
dist_info_folder = (
|
||||
script.site_packages /
|
||||
'pip_test_package-0.1.1-py{pyversion}.egg-info'.format(**globals())
|
||||
'pip_test_package-0.1.1.dist-info'
|
||||
)
|
||||
result.assert_installed('piptestpackage',
|
||||
without_egg_link=True,
|
||||
editable=False)
|
||||
result.did_create(egg_info_folder)
|
||||
result.did_create(dist_info_folder)
|
||||
|
||||
|
||||
def test_git_with_sha1_revisions(script):
|
||||
|
|
|
@ -340,8 +340,8 @@ def test_install_user_wheel(script, shared_data, with_wheel, tmpdir):
|
|||
'install', 'has.script==1.0', '--user', '--no-index',
|
||||
'--find-links', tmpdir,
|
||||
)
|
||||
egg_info_folder = script.user_site / 'has.script-1.0.dist-info'
|
||||
result.did_create(egg_info_folder)
|
||||
dist_info_folder = script.user_site / 'has.script-1.0.dist-info'
|
||||
result.did_create(dist_info_folder)
|
||||
script_file = script.user_bin / 'script.py'
|
||||
result.did_create(script_file)
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ class Tests_UninstallUserSite:
|
|||
assert_all_changes(result2, result3, [script.venv / 'build', 'cache'])
|
||||
|
||||
# site still has 0.2 (can't look in result1; have to check)
|
||||
# keep checking for egg-info because no-binary implies setup.py install
|
||||
egg_info_folder = (
|
||||
script.base_path / script.site_packages /
|
||||
'pip_test_package-0.1-py{pyversion}.egg-info'.format(**globals())
|
||||
|
|
Loading…
Reference in New Issue