D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
cloudlinux
/
venv
/
lib64
/
python3.11
/
site-packages
/
setuptools
/
tests
/
Filename :
test_virtualenv.py
back
Copy
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)