cpython: 48cb6b67d306 (original) (raw)
--- a/Lib/test/test_pkgutil.py +++ b/Lib/test/test_pkgutil.py @@ -137,8 +137,54 @@ class PkgutilPEP302Tests(unittest.TestCa self.assertEqual(foo.loads, 1) del sys.modules['foo'] + +class ExtendPathTests(unittest.TestCase):
- def create_init(self, pkgname):
dirname = tempfile.mkdtemp()[](#l1.10)
self.addCleanup(shutil.rmtree, dirname)[](#l1.11)
sys.path.insert(0, dirname)[](#l1.12)
pkgdir = os.path.join(dirname, pkgname)[](#l1.14)
os.mkdir(pkgdir)[](#l1.15)
with open(os.path.join(pkgdir, '__init__.py'), 'w') as fl:[](#l1.16)
fl.write('from pkgutil import extend_path\n__path__ = extend_path(__path__, __name__)\n')[](#l1.17)
return dirname[](#l1.19)
- def create_submodule(self, dirname, pkgname, submodule_name, value):
module_name = os.path.join(dirname, pkgname, submodule_name + '.py')[](#l1.22)
with open(module_name, 'w') as fl:[](#l1.23)
print('value={}'.format(value), file=fl)[](#l1.24)
- def setUp(self):
# Create 2 directories on sys.path[](#l1.27)
self.pkgname = 'foo'[](#l1.28)
self.dirname_0 = self.create_init(self.pkgname)[](#l1.29)
self.dirname_1 = self.create_init(self.pkgname)[](#l1.30)
- def test_simple(self):
self.create_submodule(self.dirname_0, self.pkgname, 'bar', 0)[](#l1.37)
self.create_submodule(self.dirname_1, self.pkgname, 'baz', 1)[](#l1.38)
import foo.bar[](#l1.39)
import foo.baz[](#l1.40)
# Ensure we read the expected values[](#l1.41)
self.assertEqual(foo.bar.value, 0)[](#l1.42)
self.assertEqual(foo.baz.value, 1)[](#l1.43)
# Ensure the path is set up correctly[](#l1.45)
self.assertEqual(sorted(foo.__path__),[](#l1.46)
sorted([os.path.join(self.dirname_0, self.pkgname),[](#l1.47)
os.path.join(self.dirname_1, self.pkgname)]))[](#l1.48)