mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-07-29 22:28:08 -07:00
Combine the "test wheels" and unbundling patch as they largely overlap. Remove the obsolete logic for linking the wheel wheel, which wasn't used anymore. The former patch removed the use of test wheels for coverage and pytest-subket, while the latter actually stubbed out the function to install these test wheels -- effectively also stubbing out the use of the setuptools wheel there. The leftover logic would still create a .pth file expecting that editable install, causing warnings due to non-existing directories when running the test suite on Python 3.15. The new patch -- besides other "unbundling preparations" that were preserved from the original patches -- removes the use of all tests wheels. While at it, I've also simplified it to remove the minimum amount of code necessary -- no need to actually remove the fixtures that are not used anymore. Signed-off-by: Michał Górny <mgorny@gentoo.org>
241 lines
10 KiB
Diff
241 lines
10 KiB
Diff
diff --git a/src/pip/_internal/cli/main_parser.py b/src/pip/_internal/cli/main_parser.py
|
|
index 136852466..ffec75192 100644
|
|
--- a/src/pip/_internal/cli/main_parser.py
|
|
+++ b/src/pip/_internal/cli/main_parser.py
|
|
@@ -82,6 +82,11 @@ def parse_command(args: list[str]) -> tuple[str, list[str]]:
|
|
|
|
# --python
|
|
if general_options.python and "_PIP_RUNNING_IN_SUBPROCESS" not in os.environ:
|
|
+ raise CommandError(
|
|
+ "--python option is not supported on Gentoo, as it requires bundled "
|
|
+ "dependencies that have been removed to improve security"
|
|
+ )
|
|
+
|
|
# Re-invoke pip using the specified Python interpreter
|
|
interpreter = identify_python_interpreter(general_options.python)
|
|
if interpreter is None:
|
|
diff --git a/src/pip/_internal/commands/debug.py b/src/pip/_internal/commands/debug.py
|
|
index 25bc05d0e..a73d6c358 100644
|
|
--- a/src/pip/_internal/commands/debug.py
|
|
+++ b/src/pip/_internal/commands/debug.py
|
|
@@ -8,7 +8,6 @@ from optparse import Values
|
|
from types import ModuleType
|
|
from typing import Any
|
|
|
|
-import pip._vendor
|
|
from pip._vendor.certifi import where
|
|
from pip._vendor.packaging.version import parse as parse_version
|
|
|
|
@@ -187,9 +186,7 @@ class DebugCommand(Command):
|
|
show_value("REQUESTS_CA_BUNDLE", os.environ.get("REQUESTS_CA_BUNDLE"))
|
|
show_value("CURL_CA_BUNDLE", os.environ.get("CURL_CA_BUNDLE"))
|
|
show_value("pip._vendor.certifi.where()", where())
|
|
- show_value("pip._vendor.DEBUNDLED", pip._vendor.DEBUNDLED)
|
|
-
|
|
- show_vendor_versions()
|
|
+ show_value("pip._vendor.DEBUNDLED", True)
|
|
|
|
show_tags(options)
|
|
|
|
diff --git a/tests/conftest.py b/tests/conftest.py
|
|
index f8da34376..a98dffdda 100644
|
|
--- a/tests/conftest.py
|
|
+++ b/tests/conftest.py
|
|
@@ -473,9 +473,6 @@ def virtualenv_template(
|
|
tmpdir_factory: pytest.TempPathFactory,
|
|
pip_src: Path,
|
|
pip_editable_parts: tuple[Path, ...],
|
|
- setuptools_install: Path,
|
|
- coverage_install: Path,
|
|
- socket_install: Path,
|
|
) -> VirtualEnvironment:
|
|
venv_type: VirtualEnvironmentType
|
|
if request.config.getoption("--use-venv"):
|
|
@@ -487,13 +484,6 @@ def virtualenv_template(
|
|
tmpdir = tmpdir_factory.mktemp("virtualenv")
|
|
venv = VirtualEnvironment(tmpdir.joinpath("venv_orig"), venv_type=venv_type)
|
|
|
|
- # Install setuptools, pytest-subket, and pip.
|
|
- install_pth_link(venv, "setuptools", setuptools_install)
|
|
- install_pth_link(venv, "pytest_subket", socket_install)
|
|
- # Also copy pytest-subket's .pth file so it can intercept socket calls.
|
|
- with open(venv.site / "pytest_socket.pth", "w") as f:
|
|
- f.write(socket_install.joinpath("pytest_socket.pth").read_text())
|
|
-
|
|
pth, dist_info = pip_editable_parts
|
|
|
|
shutil.copy(pth, venv.site)
|
|
@@ -505,14 +495,6 @@ def virtualenv_template(
|
|
# detects changed files.
|
|
venv.site.joinpath("easy-install.pth").touch()
|
|
|
|
- if request.config.getoption("--cov"):
|
|
- # Install coverage and pth file for executing it in any spawned processes
|
|
- # in this virtual environment.
|
|
- install_pth_link(venv, "coverage", coverage_install)
|
|
- # zz prefix ensures the file is after easy-install.pth.
|
|
- with open(venv.site / "zz-coverage-helper.pth", "a") as f:
|
|
- f.write("import coverage; coverage.process_startup()")
|
|
-
|
|
# Drop (non-relocatable) launchers.
|
|
for exe in os.listdir(venv.bin):
|
|
if not exe.startswith(("python", "libpy")): # Don't remove libpypy-c.so...
|
|
diff --git a/tests/functional/test_check.py b/tests/functional/test_check.py
|
|
index acf99bc13..5425002e7 100644
|
|
--- a/tests/functional/test_check.py
|
|
+++ b/tests/functional/test_check.py
|
|
@@ -10,10 +10,8 @@ from tests.lib import (
|
|
def matches_expected_lines(string: str, expected_lines: Collection[str]) -> bool:
|
|
# Ignore empty lines
|
|
output_lines = list(filter(None, string.splitlines()))
|
|
- # We'll match the last n lines, given n lines to match.
|
|
- last_few_output_lines = output_lines[-len(expected_lines) :]
|
|
# And order does not matter
|
|
- return set(last_few_output_lines) == set(expected_lines)
|
|
+ return set(expected_lines).issubset(set(output_lines))
|
|
|
|
|
|
def test_basic_check_clean(script: PipTestEnvironment) -> None:
|
|
diff --git a/tests/functional/test_freeze.py b/tests/functional/test_freeze.py
|
|
index 4e9ae927f..597c33dc2 100644
|
|
--- a/tests/functional/test_freeze.py
|
|
+++ b/tests/functional/test_freeze.py
|
|
@@ -80,8 +80,8 @@ def test_basic_freeze(script: PipTestEnvironment) -> None:
|
|
result = script.pip("freeze", expect_stderr=True)
|
|
expected = textwrap.dedent(
|
|
"""\
|
|
- ...simple==2.0
|
|
- simple2==3.0...
|
|
+ ...simple==2.0...
|
|
+ ...simple2==3.0...
|
|
<BLANKLINE>"""
|
|
)
|
|
_check_output(result.stdout, expected)
|
|
@@ -998,7 +998,7 @@ def test_freeze_skip_work_dir_pkg(script: PipTestEnvironment) -> None:
|
|
|
|
# Freeze should not include package simple when run from package directory
|
|
result = script.pip("freeze", cwd=pkg_path)
|
|
- assert "simple" not in result.stdout
|
|
+ assert "\nsimple==" not in result.stdout
|
|
|
|
|
|
def test_freeze_include_work_dir_pkg(script: PipTestEnvironment) -> None:
|
|
diff --git a/tests/functional/test_install_check.py b/tests/functional/test_install_check.py
|
|
index cb8312b53..174bb8f66 100644
|
|
--- a/tests/functional/test_install_check.py
|
|
+++ b/tests/functional/test_install_check.py
|
|
@@ -61,6 +61,7 @@ def test_check_install_canonicalization(script: PipTestEnvironment) -> None:
|
|
)
|
|
assert "requires" not in result.stderr
|
|
assert result.returncode == 0
|
|
+ return
|
|
|
|
# Double check that all errors are resolved in the end
|
|
result = script.pip("check")
|
|
diff --git a/tests/functional/test_list.py b/tests/functional/test_list.py
|
|
index b70be2dbb..89bbfce18 100644
|
|
--- a/tests/functional/test_list.py
|
|
+++ b/tests/functional/test_list.py
|
|
@@ -1,5 +1,6 @@
|
|
import json
|
|
import os
|
|
+import re
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
@@ -41,8 +42,8 @@ def test_basic_list(simple_script: PipTestEnvironment) -> None:
|
|
|
|
"""
|
|
result = simple_script.pip("list")
|
|
- assert "simple 1.0" in result.stdout, str(result)
|
|
- assert "simple2 3.0" in result.stdout, str(result)
|
|
+ assert re.search(r"simple\s+1\.0", result.stdout), str(result)
|
|
+ assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
|
|
|
|
|
|
def test_verbose_flag(simple_script: PipTestEnvironment) -> None:
|
|
@@ -54,8 +55,8 @@ def test_verbose_flag(simple_script: PipTestEnvironment) -> None:
|
|
assert "Version" in result.stdout, str(result)
|
|
assert "Location" in result.stdout, str(result)
|
|
assert "Installer" in result.stdout, str(result)
|
|
- assert "simple 1.0" in result.stdout, str(result)
|
|
- assert "simple2 3.0" in result.stdout, str(result)
|
|
+ assert re.search(r"simple\s+1\.0", result.stdout), str(result)
|
|
+ assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
|
|
|
|
|
|
def test_columns_flag(simple_script: PipTestEnvironment) -> None:
|
|
@@ -66,8 +67,8 @@ def test_columns_flag(simple_script: PipTestEnvironment) -> None:
|
|
assert "Package" in result.stdout, str(result)
|
|
assert "Version" in result.stdout, str(result)
|
|
assert "simple (1.0)" not in result.stdout, str(result)
|
|
- assert "simple 1.0" in result.stdout, str(result)
|
|
- assert "simple2 3.0" in result.stdout, str(result)
|
|
+ assert re.search(r"simple\s+1\.0", result.stdout), str(result)
|
|
+ assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
|
|
|
|
|
|
def test_format_priority(simple_script: PipTestEnvironment) -> None:
|
|
@@ -79,16 +80,16 @@ def test_format_priority(simple_script: PipTestEnvironment) -> None:
|
|
)
|
|
assert "simple==1.0" in result.stdout, str(result)
|
|
assert "simple2==3.0" in result.stdout, str(result)
|
|
- assert "simple 1.0" not in result.stdout, str(result)
|
|
- assert "simple2 3.0" not in result.stdout, str(result)
|
|
+ assert not re.search(r"simple\s+1\.0", result.stdout), str(result)
|
|
+ assert not re.search(r"simple2\s+3\.0", result.stdout), str(result)
|
|
|
|
result = simple_script.pip("list", "--format=freeze", "--format=columns")
|
|
assert "Package" in result.stdout, str(result)
|
|
assert "Version" in result.stdout, str(result)
|
|
assert "simple==1.0" not in result.stdout, str(result)
|
|
assert "simple2==3.0" not in result.stdout, str(result)
|
|
- assert "simple 1.0" in result.stdout, str(result)
|
|
- assert "simple2 3.0" in result.stdout, str(result)
|
|
+ assert re.search(r"simple\s+1\.0", result.stdout), str(result)
|
|
+ assert re.search(r"simple2\s+3\.0", result.stdout), str(result)
|
|
|
|
|
|
def test_local_flag(simple_script: PipTestEnvironment) -> None:
|
|
@@ -124,8 +125,8 @@ def test_multiple_exclude_and_normalization(
|
|
assert "Normalizable_Name" in result.stdout
|
|
assert "pip" in result.stdout
|
|
result = script.pip("list", "--exclude", "normalizablE-namE", "--exclude", "pIp")
|
|
- assert "Normalizable_Name" not in result.stdout
|
|
- assert "pip" not in result.stdout
|
|
+ assert "Normalizable_Name " not in result.stdout
|
|
+ assert "pip " not in result.stdout
|
|
|
|
|
|
@pytest.mark.usefixtures("enable_user_site")
|
|
diff --git a/tests/lib/venv.py b/tests/lib/venv.py
|
|
index 67b01d9f3..3caa016a0 100644
|
|
--- a/tests/lib/venv.py
|
|
+++ b/tests/lib/venv.py
|
|
@@ -11,6 +11,7 @@ import venv as _venv
|
|
from pathlib import Path
|
|
from typing import Literal
|
|
|
|
+import pytest
|
|
import virtualenv as _virtualenv
|
|
|
|
VirtualEnvironmentType = Literal["virtualenv", "venv"]
|
|
@@ -37,7 +38,7 @@ class VirtualEnvironment:
|
|
self._venv_type = venv_type
|
|
else:
|
|
self._venv_type = "virtualenv"
|
|
- self._user_site_packages = False
|
|
+ self._user_site_packages = True
|
|
self._template = template
|
|
self._sitecustomize: str | None = None
|
|
self._update_paths()
|
|
@@ -235,6 +236,8 @@ class VirtualEnvironment:
|
|
|
|
@user_site_packages.setter
|
|
def user_site_packages(self, value: bool) -> None:
|
|
+ if not value:
|
|
+ pytest.skip("Gentoo: skipping due to lack of system site-packages")
|
|
self._user_site_packages = value
|
|
if self._legacy_virtualenv:
|
|
marker = self.lib / "no-global-site-packages.txt"
|