Skip to content

Commit 1b96917

Browse files
committed
Remove dependency on importlib_metadata for testing a 'local' package.
1 parent f07f0a2 commit 1b96917

File tree

2 files changed

+46
-12
lines changed

2 files changed

+46
-12
lines changed

importlib_metadata/tests/fixtures.py

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import unicode_literals
22

3+
import os
34
import sys
45
import shutil
56
import tempfile
@@ -20,17 +21,41 @@
2021
__metaclass__ = type
2122

2223

24+
@contextlib.contextmanager
25+
def tempdir():
26+
tmpdir = tempfile.mkdtemp()
27+
sys.path[:0] = [tmpdir]
28+
try:
29+
yield pathlib.Path(tmpdir)
30+
finally:
31+
sys.path.remove(tmpdir)
32+
shutil.rmtree(tmpdir)
33+
34+
35+
@contextlib.contextmanager
36+
def save_cwd():
37+
orig = os.getcwd()
38+
try:
39+
yield
40+
finally:
41+
os.chdir(orig)
42+
43+
44+
@contextlib.contextmanager
45+
def tempdir_as_cwd():
46+
with save_cwd():
47+
with tempdir() as tmp:
48+
os.chdir(str(tmp))
49+
yield tmp
50+
51+
2352
class SiteDir:
2453
@staticmethod
2554
@contextlib.contextmanager
2655
def site_dir():
27-
tmpdir = tempfile.mkdtemp()
28-
sys.path[:0] = [tmpdir]
29-
try:
30-
yield pathlib.Path(tmpdir)
31-
finally:
32-
sys.path.remove(tmpdir)
33-
shutil.rmtree(tmpdir)
56+
with tempdir() as tmp:
57+
sys.path[:0] = [str(tmp)]
58+
yield tmp
3459

3560
def setUp(self):
3661
self.fixtures = ExitStack()
@@ -102,6 +127,14 @@ def setUp(self):
102127
build_files(EggInfoPkg.files, prefix=self.site_dir)
103128

104129

130+
class LocalPackage:
131+
def setUp(self):
132+
self.fixtures = ExitStack()
133+
self.addCleanup(self.fixtures.close)
134+
self.fixtures.enter_context(tempdir_as_cwd())
135+
build_files(EggInfoPkg.files)
136+
137+
105138
def build_files(file_defs, prefix=pathlib.Path()):
106139
"""
107140
Build a set of files/directories, as described by the

importlib_metadata/tests/test_api.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,6 @@ def test_files_dist_info(self):
101101
def test_files_egg_info(self):
102102
self._test_files(importlib_metadata.files('egginfo-pkg'))
103103

104-
# This will require its own fixture. Leave it for now.
105-
def test_find_local(self):
106-
dist = importlib_metadata.api.local_distribution()
107-
assert dist.metadata['Name'] == 'importlib-metadata'
108-
109104
def test_requires(self):
110105
deps = importlib_metadata.requires('egginfo-pkg')
111106
parsed = list(map(packaging.requirements.Requirement, deps))
@@ -151,3 +146,9 @@ def test_more_complex_deps_requires_text(self):
151146

152147
assert deps == expected
153148
assert all(map(packaging.requirements.Requirement, deps))
149+
150+
151+
class LocalProjectTests(fixtures.LocalPackage, unittest.TestCase):
152+
def test_find_local(self):
153+
dist = importlib_metadata.api.local_distribution()
154+
assert dist.metadata['Name'] == 'egginfo-pkg'

0 commit comments

Comments
 (0)