File tree Expand file tree Collapse file tree 2 files changed +46
-12
lines changed
Expand file tree Collapse file tree 2 files changed +46
-12
lines changed Original file line number Diff line number Diff line change 11from __future__ import unicode_literals
22
3+ import os
34import sys
45import shutil
56import tempfile
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+
2352class 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+
105138def build_files (file_defs , prefix = pathlib .Path ()):
106139 """
107140 Build a set of files/directories, as described by the
Original file line number Diff line number Diff 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'
You can’t perform that action at this time.
0 commit comments