From 6437f524bd60e943be9415818f1554bfda56920f Mon Sep 17 00:00:00 2001 From: Last G Date: Thu, 19 May 2016 11:35:18 +0200 Subject: Get site-packages dirs from site.py too --- setuptools/tests/test_easy_install.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'setuptools/tests/test_easy_install.py') diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index 55b8b05a..b9f820d8 100644 --- a/setuptools/tests/test_easy_install.py +++ b/setuptools/tests/test_easy_install.py @@ -119,6 +119,10 @@ class TestEasyInstallTest: with pytest.raises(distutils.errors.DistutilsError): cmd.cant_write_to_target() + @mock.patch('site.getsitepackages', lambda: ['/setuptools/test/site-packages']) + def test_all_site_dirs(self): + assert '/setuptools/test/site-packages' in ei.get_site_dirs() + class TestPTHFileWriter: def test_add_from_cwd_site_sets_dirty(self): -- cgit v1.2.3 From 61143d61e148ea2d3efa61df1c459c55cdb35739 Mon Sep 17 00:00:00 2001 From: Last G Date: Thu, 19 May 2016 17:21:32 +0200 Subject: Fix tests for working in environment without site.getsitepakages --- setuptools/tests/test_easy_install.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'setuptools/tests/test_easy_install.py') diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index b9f820d8..aec65a11 100644 --- a/setuptools/tests/test_easy_install.py +++ b/setuptools/tests/test_easy_install.py @@ -41,6 +41,22 @@ from . import contexts from .textwrap import DALS +@contextlib.contextmanager +def _mark_removing_patcher(obj, attr, newval): + setattr(obj, attr, newval) + try: + yield + finally: + delattr(obj, attr) + + +def magic_patch_object(obj, attr, newval): + if hasattr(obj, attr): + return mock.patch.object(obj, attr, newval) + else: + return _mark_removing_patcher(obj, attr, newval) + + class FakeDist(object): def get_entry_map(self, group): if group != 'console_scripts': @@ -119,10 +135,21 @@ class TestEasyInstallTest: with pytest.raises(distutils.errors.DistutilsError): cmd.cant_write_to_target() - @mock.patch('site.getsitepackages', lambda: ['/setuptools/test/site-packages']) + @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): -- cgit v1.2.3 From 99fb3277660297459fbc080a8c6def98a8c52421 Mon Sep 17 00:00:00 2001 From: Last G Date: Thu, 19 May 2016 17:31:24 +0200 Subject: Replace contextlib with decorator --- setuptools/tests/test_easy_install.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'setuptools/tests/test_easy_install.py') diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index aec65a11..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,20 +42,24 @@ from . import contexts from .textwrap import DALS -@contextlib.contextmanager -def _mark_removing_patcher(obj, attr, newval): - setattr(obj, attr, newval) - try: - yield - finally: - delattr(obj, attr) +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 _mark_removing_patcher(obj, attr, newval) + return _mock_removing_patcher(obj, attr, newval) class FakeDist(object): -- cgit v1.2.3