diff options
author | Adrian Freund <adrian@freund.io> | 2021-05-05 19:26:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-05 18:26:30 +0100 |
commit | 7bfd44410ee955f74645d72205ccbb07b14b9110 (patch) | |
tree | a314c0abedee3ef1e023922045892b4f4f661d5e /tests | |
parent | 2a080a0d912e3378382fe2615b18e841482ffd63 (diff) | |
download | virtualenv-7bfd44410ee955f74645d72205ccbb07b14b9110.tar.gz |
Fix site.getsitepackages() broken on python2 on debian (#2108)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/create/test_creator.py | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/tests/unit/create/test_creator.py b/tests/unit/create/test_creator.py index 69c7c96..e51833f 100644 --- a/tests/unit/create/test_creator.py +++ b/tests/unit/create/test_creator.py @@ -7,6 +7,7 @@ import json import logging import os import shutil +import site import stat import subprocess import sys @@ -625,15 +626,11 @@ def test_pth_in_site_vs_PYTHONPATH(tmp_path): def test_getsitepackages_system_site(tmp_path): - import site - - old_prefixes = site.PREFIXES - site.PREFIXES = [sys.base_prefix, sys.base_exec_prefix] - system_site_packages = site.getsitepackages() - site.PREFIXES = old_prefixes - # Test without --system-site-packages session = cli_run([ensure_text(str(tmp_path))]) + + system_site_packages = get_expected_system_site_packages(session) + out = subprocess.check_output( [str(session.creator.exe), "-c", r"import site; print(site.getsitepackages())"], universal_newlines=True, @@ -645,6 +642,9 @@ def test_getsitepackages_system_site(tmp_path): # Test with --system-site-packages session = cli_run([ensure_text(str(tmp_path)), "--system-site-packages"]) + + system_site_packages = get_expected_system_site_packages(session) + out = subprocess.check_output( [str(session.creator.exe), "-c", r"import site; print(site.getsitepackages())"], universal_newlines=True, @@ -653,3 +653,32 @@ def test_getsitepackages_system_site(tmp_path): for system_site_package in system_site_packages: assert system_site_package in site_packages + + +def get_expected_system_site_packages(session): + base_prefix = session.creator.pyenv_cfg["base-prefix"] + base_exec_prefix = session.creator.pyenv_cfg["base-exec-prefix"] + old_prefixes = site.PREFIXES + site.PREFIXES = [base_prefix, base_exec_prefix] + system_site_packages = site.getsitepackages() + site.PREFIXES = old_prefixes + + return system_site_packages + + +def test_get_site_packages(tmp_path): + case_sensitive = fs_is_case_sensitive() + session = cli_run([ensure_text(str(tmp_path))]) + env_site_packages = [str(session.creator.purelib), str(session.creator.platlib)] + out = subprocess.check_output( + [str(session.creator.exe), "-c", r"import site; print(site.getsitepackages())"], + universal_newlines=True, + ) + site_packages = ast.literal_eval(out) + + if not case_sensitive: + env_site_packages = [x.lower() for x in env_site_packages] + site_packages = [x.lower() for x in site_packages] + + for env_site_package in env_site_packages: + assert env_site_package in site_packages |