Remove hardcoded libpython binaries and add debug step
All checks were successful
build / build-linux (push) Successful in 16s
All checks were successful
build / build-linux (push) Successful in 16s
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
from urllib.error import URLError
|
||||
from urllib.request import urlopen
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def pytest_virtualenv_works(venv):
|
||||
"""
|
||||
pytest_virtualenv may not work. if it doesn't, skip these
|
||||
tests. See #1284.
|
||||
"""
|
||||
venv_prefix = venv.run(["python", "-c", "import sys; print(sys.prefix)"]).strip()
|
||||
if venv_prefix == sys.prefix:
|
||||
pytest.skip("virtualenv is broken (see pypa/setuptools#1284)")
|
||||
|
||||
|
||||
def test_clean_env_install(venv_without_setuptools, setuptools_wheel):
|
||||
"""
|
||||
Check setuptools can be installed in a clean environment.
|
||||
"""
|
||||
cmd = ["python", "-m", "pip", "install", str(setuptools_wheel)]
|
||||
venv_without_setuptools.run(cmd)
|
||||
|
||||
|
||||
def access_pypi():
|
||||
# Detect if tests are being run without connectivity
|
||||
if not os.environ.get('NETWORK_REQUIRED', False): # pragma: nocover
|
||||
try:
|
||||
urlopen('https://pypi.org', timeout=1)
|
||||
except URLError:
|
||||
# No network, disable most of these tests
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
'platform.python_implementation() == "PyPy"',
|
||||
reason="https://github.com/pypa/setuptools/pull/2865#issuecomment-965834995",
|
||||
)
|
||||
@pytest.mark.skipif(not access_pypi(), reason="no network")
|
||||
# ^-- Even when it is not necessary to install a different version of `pip`
|
||||
# the build process will still try to download `wheel`, see #3147 and #2986.
|
||||
@pytest.mark.parametrize(
|
||||
'pip_version',
|
||||
[
|
||||
None,
|
||||
pytest.param(
|
||||
'pip<20.1',
|
||||
marks=pytest.mark.xfail(
|
||||
'sys.version_info >= (3, 12)',
|
||||
reason="pip 23.1.2 required for Python 3.12 and later",
|
||||
),
|
||||
),
|
||||
pytest.param(
|
||||
'pip<21',
|
||||
marks=pytest.mark.xfail(
|
||||
'sys.version_info >= (3, 12)',
|
||||
reason="pip 23.1.2 required for Python 3.12 and later",
|
||||
),
|
||||
),
|
||||
pytest.param(
|
||||
'pip<22',
|
||||
marks=pytest.mark.xfail(
|
||||
'sys.version_info >= (3, 12)',
|
||||
reason="pip 23.1.2 required for Python 3.12 and later",
|
||||
),
|
||||
),
|
||||
pytest.param(
|
||||
'pip<23',
|
||||
marks=pytest.mark.xfail(
|
||||
'sys.version_info >= (3, 12)',
|
||||
reason="pip 23.1.2 required for Python 3.12 and later",
|
||||
),
|
||||
),
|
||||
pytest.param(
|
||||
'https://github.com/pypa/pip/archive/main.zip',
|
||||
marks=pytest.mark.xfail(reason='#2975'),
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_pip_upgrade_from_source(
|
||||
pip_version, venv_without_setuptools, setuptools_wheel, setuptools_sdist
|
||||
):
|
||||
"""
|
||||
Check pip can upgrade setuptools from source.
|
||||
"""
|
||||
# Install pip/wheel, in a venv without setuptools (as it
|
||||
# should not be needed for bootstrapping from source)
|
||||
venv = venv_without_setuptools
|
||||
venv.run(["pip", "install", "-U", "wheel"])
|
||||
if pip_version is not None:
|
||||
venv.run(["python", "-m", "pip", "install", "-U", pip_version, "--retries=1"])
|
||||
with pytest.raises(subprocess.CalledProcessError):
|
||||
# Meta-test to make sure setuptools is not installed
|
||||
venv.run(["python", "-c", "import setuptools"])
|
||||
|
||||
# Then install from wheel.
|
||||
venv.run(["pip", "install", str(setuptools_wheel)])
|
||||
# And finally try to upgrade from source.
|
||||
venv.run(["pip", "install", "--no-cache-dir", "--upgrade", str(setuptools_sdist)])
|
||||
|
||||
|
||||
def test_no_missing_dependencies(bare_venv, request):
|
||||
"""
|
||||
Quick and dirty test to ensure all external dependencies are vendored.
|
||||
"""
|
||||
setuptools_dir = request.config.rootdir
|
||||
bare_venv.run(['python', 'setup.py', '--help'], cwd=setuptools_dir)
|
||||
Reference in New Issue
Block a user