summaryrefslogtreecommitdiff
path: root/setuptools
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2016-05-21 10:19:48 -0400
committerJason R. Coombs <jaraco@jaraco.com>2016-05-21 10:19:48 -0400
commit09f117259ad08635aeab0a5e060b8a5d58c69729 (patch)
tree2ffe4ce808ec94d72cd9709d76faa9fb946c1645 /setuptools
parenta0fc5c1ebb910f7ab01f8a86f0fb6cc4d61db66a (diff)
parent99fb3277660297459fbc080a8c6def98a8c52421 (diff)
downloadpython-setuptools-git-09f117259ad08635aeab0a5e060b8a5d58c69729.tar.gz
Merge pull request #586 from last-g/bug/shadowbug
Get real `site-packages`
Diffstat (limited to 'setuptools')
-rwxr-xr-xsetuptools/command/easy_install.py5
-rw-r--r--setuptools/tests/test_easy_install.py36
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):