diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2016-05-21 10:19:48 -0400 |
|---|---|---|
| committer | Jason R. Coombs <jaraco@jaraco.com> | 2016-05-21 10:19:48 -0400 |
| commit | 09f117259ad08635aeab0a5e060b8a5d58c69729 (patch) | |
| tree | 2ffe4ce808ec94d72cd9709d76faa9fb946c1645 /setuptools | |
| parent | a0fc5c1ebb910f7ab01f8a86f0fb6cc4d61db66a (diff) | |
| parent | 99fb3277660297459fbc080a8c6def98a8c52421 (diff) | |
| download | python-setuptools-git-09f117259ad08635aeab0a5e060b8a5d58c69729.tar.gz | |
Merge pull request #586 from last-g/bug/shadowbug
Get real `site-packages`
Diffstat (limited to 'setuptools')
| -rwxr-xr-x | setuptools/command/easy_install.py | 5 | ||||
| -rw-r--r-- | setuptools/tests/test_easy_install.py | 36 |
2 files changed, 41 insertions, 0 deletions
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index ea5cb028..0bd3ea45 100755 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -1347,6 +1347,11 @@ def get_site_dirs(): if site.ENABLE_USER_SITE: sitedirs.append(site.USER_SITE) + try: + sitedirs.extend(site.getsitepackages()) + except AttributeError: + pass + sitedirs = list(map(normalize_path, sitedirs)) return sitedirs diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index 55b8b05a..a4fd39fe 100644 --- a/setuptools/tests/test_easy_install.py +++ b/setuptools/tests/test_easy_install.py @@ -10,6 +10,7 @@ import shutil import tempfile import site import contextlib +import functools import tarfile import logging import itertools @@ -41,6 +42,26 @@ from . import contexts from .textwrap import DALS +def _mock_removing_patcher(obj, attr, newval): + def decorator(fn): + @functools.wraps(fn) + def wrapper(*args, **kwargs): + setattr(obj, attr, newval) + try: + return fn(*args, **kwargs) + finally: + delattr(obj, attr) + return wrapper + return decorator + + +def magic_patch_object(obj, attr, newval): + if hasattr(obj, attr): + return mock.patch.object(obj, attr, newval) + else: + return _mock_removing_patcher(obj, attr, newval) + + class FakeDist(object): def get_entry_map(self, group): if group != 'console_scripts': @@ -119,6 +140,21 @@ class TestEasyInstallTest: with pytest.raises(distutils.errors.DistutilsError): cmd.cant_write_to_target() + @magic_patch_object(site, 'getsitepackages', lambda: ['/setuptools/test/site-packages']) + def test_all_site_dirs(self): + assert '/setuptools/test/site-packages' in ei.get_site_dirs() + + def test_all_site_dirs_works_without_getsitepackages(self): + getsitepackages_old = None + if hasattr(site, 'getsitepackages'): + getsitepackages_old = site.getsitepackages + del site.getsitepackages + try: + assert ei.get_site_dirs() + finally: + if getsitepackages_old is not None: + site.getsitepackages = getsitepackages_old + class TestPTHFileWriter: def test_add_from_cwd_site_sets_dirty(self): |
