mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
Build fake wheels for --user tests
The old INITools tests rely on setup.py, which relies on distutils and generates a ton of issues. Build fake wheels directly to avoid dealing with them.
This commit is contained in:
parent
b850d539f9
commit
4bf1b67964
|
@ -1,6 +1,7 @@
|
|||
"""
|
||||
tests specific to "pip install --user"
|
||||
"""
|
||||
import os
|
||||
import textwrap
|
||||
from os.path import curdir, isdir, isfile
|
||||
from pathlib import Path
|
||||
|
@ -8,7 +9,12 @@ from pathlib import Path
|
|||
import pytest
|
||||
|
||||
from tests.lib import pyversion # noqa: F401
|
||||
from tests.lib import PipTestEnvironment, TestData, need_svn
|
||||
from tests.lib import (
|
||||
PipTestEnvironment,
|
||||
TestData,
|
||||
create_basic_wheel_for_package,
|
||||
need_svn,
|
||||
)
|
||||
from tests.lib.local_repos import local_checkout
|
||||
from tests.lib.venv import VirtualEnvironment
|
||||
|
||||
|
@ -142,7 +148,6 @@ class Tests_UserSite:
|
|||
result2.did_create(egg_info_folder)
|
||||
assert not isfile(initools_v3_file), initools_v3_file
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.incompatible_with_test_venv
|
||||
def test_install_user_conflict_in_globalsite(
|
||||
self, virtualenv: VirtualEnvironment, script: PipTestEnvironment
|
||||
|
@ -151,30 +156,41 @@ class Tests_UserSite:
|
|||
Test user install with conflict in global site ignores site and
|
||||
installs to usersite
|
||||
"""
|
||||
create_basic_wheel_for_package(script, "initools", "0.1")
|
||||
create_basic_wheel_for_package(script, "initools", "0.2")
|
||||
|
||||
_patch_dist_in_site_packages(virtualenv)
|
||||
|
||||
script.pip("install", "INITools==0.2", "--no-binary=:all:")
|
||||
|
||||
result2 = script.pip("install", "--user", "INITools==0.1", "--no-binary=:all:")
|
||||
script.pip(
|
||||
"install",
|
||||
"--no-index",
|
||||
"--find-links",
|
||||
script.scratch_path,
|
||||
"initools==0.2",
|
||||
)
|
||||
result2 = script.pip(
|
||||
"install",
|
||||
"--no-index",
|
||||
"--find-links",
|
||||
script.scratch_path,
|
||||
"--user",
|
||||
"initools==0.1",
|
||||
)
|
||||
|
||||
# usersite has 0.1
|
||||
# we still test for egg-info because no-binary implies setup.py install
|
||||
egg_info_folder = script.user_site / f"INITools-0.1-py{pyversion}.egg-info"
|
||||
dist_info_folder = script.user_site / "initools-0.1.dist-info"
|
||||
initools_folder = script.user_site / "initools"
|
||||
result2.did_create(egg_info_folder)
|
||||
result2.did_create(dist_info_folder)
|
||||
result2.did_create(initools_folder)
|
||||
|
||||
# site still has 0.2 (can't look in result1; have to check)
|
||||
egg_info_folder = (
|
||||
script.base_path
|
||||
/ script.site_packages
|
||||
/ f"INITools-0.2-py{pyversion}.egg-info"
|
||||
dist_info_folder = (
|
||||
script.base_path / script.site_packages / "initools-0.2.dist-info"
|
||||
)
|
||||
initools_folder = script.base_path / script.site_packages / "initools"
|
||||
assert isdir(egg_info_folder)
|
||||
assert isdir(dist_info_folder)
|
||||
assert isdir(initools_folder)
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.incompatible_with_test_venv
|
||||
def test_upgrade_user_conflict_in_globalsite(
|
||||
self, virtualenv: VirtualEnvironment, script: PipTestEnvironment
|
||||
|
@ -183,31 +199,42 @@ class Tests_UserSite:
|
|||
Test user install/upgrade with conflict in global site ignores site and
|
||||
installs to usersite
|
||||
"""
|
||||
create_basic_wheel_for_package(script, "initools", "0.2")
|
||||
create_basic_wheel_for_package(script, "initools", "0.3.1")
|
||||
|
||||
_patch_dist_in_site_packages(virtualenv)
|
||||
|
||||
script.pip("install", "INITools==0.2", "--no-binary=:all:")
|
||||
script.pip(
|
||||
"install",
|
||||
"--no-index",
|
||||
"--find-links",
|
||||
script.scratch_path,
|
||||
"initools==0.2",
|
||||
)
|
||||
result2 = script.pip(
|
||||
"install", "--user", "--upgrade", "INITools", "--no-binary=:all:"
|
||||
"install",
|
||||
"--no-index",
|
||||
"--find-links",
|
||||
script.scratch_path,
|
||||
"--user",
|
||||
"--upgrade",
|
||||
"initools",
|
||||
)
|
||||
|
||||
# usersite has 0.3.1
|
||||
# we still test for egg-info because no-binary implies setup.py install
|
||||
egg_info_folder = script.user_site / f"INITools-0.3.1-py{pyversion}.egg-info"
|
||||
dist_info_folder = script.user_site / "initools-0.3.1.dist-info"
|
||||
initools_folder = script.user_site / "initools"
|
||||
result2.did_create(egg_info_folder)
|
||||
result2.did_create(dist_info_folder)
|
||||
result2.did_create(initools_folder)
|
||||
|
||||
# site still has 0.2 (can't look in result1; have to check)
|
||||
egg_info_folder = (
|
||||
script.base_path
|
||||
/ script.site_packages
|
||||
/ f"INITools-0.2-py{pyversion}.egg-info"
|
||||
dist_info_folder = (
|
||||
script.base_path / script.site_packages / "initools-0.2.dist-info"
|
||||
)
|
||||
initools_folder = script.base_path / script.site_packages / "initools"
|
||||
assert isdir(egg_info_folder), result2.stdout
|
||||
assert isdir(dist_info_folder), result2.stdout
|
||||
assert isdir(initools_folder)
|
||||
|
||||
@pytest.mark.network
|
||||
@pytest.mark.incompatible_with_test_venv
|
||||
def test_install_user_conflict_in_globalsite_and_usersite(
|
||||
self, virtualenv: VirtualEnvironment, script: PipTestEnvironment
|
||||
|
@ -216,34 +243,54 @@ class Tests_UserSite:
|
|||
Test user install with conflict in globalsite and usersite ignores
|
||||
global site and updates usersite.
|
||||
"""
|
||||
initools_v3_file_name = os.path.join("initools", "configparser.py")
|
||||
create_basic_wheel_for_package(script, "initools", "0.1")
|
||||
create_basic_wheel_for_package(script, "initools", "0.2")
|
||||
create_basic_wheel_for_package(
|
||||
script,
|
||||
"initools",
|
||||
"0.3",
|
||||
extra_files={initools_v3_file_name: "# Hi!"},
|
||||
)
|
||||
|
||||
_patch_dist_in_site_packages(virtualenv)
|
||||
|
||||
script.pip("install", "INITools==0.2", "--no-binary=:all:")
|
||||
script.pip("install", "--user", "INITools==0.3", "--no-binary=:all:")
|
||||
|
||||
result3 = script.pip("install", "--user", "INITools==0.1", "--no-binary=:all:")
|
||||
script.pip(
|
||||
"install",
|
||||
"--no-index",
|
||||
"--find-links",
|
||||
script.scratch_path,
|
||||
"initools==0.2",
|
||||
)
|
||||
script.pip(
|
||||
"install",
|
||||
"--no-index",
|
||||
"--find-links",
|
||||
script.scratch_path,
|
||||
"--user",
|
||||
"initools==0.3",
|
||||
)
|
||||
result3 = script.pip(
|
||||
"install",
|
||||
"--no-index",
|
||||
"--find-links",
|
||||
script.scratch_path,
|
||||
"--user",
|
||||
"initools==0.1",
|
||||
)
|
||||
|
||||
# usersite has 0.1
|
||||
# we still test for egg-info because no-binary implies setup.py install
|
||||
egg_info_folder = script.user_site / f"INITools-0.1-py{pyversion}.egg-info"
|
||||
initools_v3_file = (
|
||||
# file only in 0.3
|
||||
script.base_path
|
||||
/ script.user_site
|
||||
/ "initools"
|
||||
/ "configparser.py"
|
||||
)
|
||||
result3.did_create(egg_info_folder)
|
||||
dist_info_folder = script.user_site / "initools-0.1.dist-info"
|
||||
result3.did_create(dist_info_folder)
|
||||
initools_v3_file = script.base_path / script.user_site / initools_v3_file_name
|
||||
assert not isfile(initools_v3_file), initools_v3_file
|
||||
|
||||
# site still has 0.2 (can't just look in result1; have to check)
|
||||
egg_info_folder = (
|
||||
script.base_path
|
||||
/ script.site_packages
|
||||
/ f"INITools-0.2-py{pyversion}.egg-info"
|
||||
dist_info_folder = (
|
||||
script.base_path / script.site_packages / "initools-0.2.dist-info"
|
||||
)
|
||||
initools_folder = script.base_path / script.site_packages / "initools"
|
||||
assert isdir(egg_info_folder)
|
||||
assert isdir(dist_info_folder)
|
||||
assert isdir(initools_folder)
|
||||
|
||||
@pytest.mark.network
|
||||
|
|
Loading…
Reference in a new issue