Mercurial > cpython-lru_cache-weakref
changeset 77142:70ec1f671c19
Added test for namespace package dynamic path updates.
| author | Eric V. Smith <eric@trueblade.com> |
|---|---|
| date | Fri, 25 May 2012 11:25:27 -0400 |
| parents | 59567c117b0e |
| children | 1997345ce391 |
| files | Lib/test/test_namespace_pkgs.py |
| diffstat | 1 files changed, 45 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/Lib/test/test_namespace_pkgs.py Fri May 25 13:54:53 2012 +0100 +++ b/Lib/test/test_namespace_pkgs.py Fri May 25 11:25:27 2012 -0400 @@ -206,6 +206,51 @@ self.assertNotIn('namespace', str(foo.__loader__).lower()) +class DynamicPathCalculation(NamespacePackageTest): + paths = ['project1', 'project2'] + + def test_project3_fails(self): + import parent.child.one + self.assertEqual(len(parent.__path__), 2) + self.assertEqual(len(parent.child.__path__), 2) + import parent.child.two + self.assertEqual(len(parent.__path__), 2) + self.assertEqual(len(parent.child.__path__), 2) + + self.assertEqual(parent.child.one.attr, 'parent child one') + self.assertEqual(parent.child.two.attr, 'parent child two') + + with self.assertRaises(ImportError): + import parent.child.three + + self.assertEqual(len(parent.__path__), 2) + self.assertEqual(len(parent.child.__path__), 2) + + def test_project3_succeeds(self): + import parent.child.one + self.assertEqual(len(parent.__path__), 2) + self.assertEqual(len(parent.child.__path__), 2) + import parent.child.two + self.assertEqual(len(parent.__path__), 2) + self.assertEqual(len(parent.child.__path__), 2) + + self.assertEqual(parent.child.one.attr, 'parent child one') + self.assertEqual(parent.child.two.attr, 'parent child two') + + with self.assertRaises(ImportError): + import parent.child.three + + # now add project3 + sys.path.append(os.path.join(self.root, 'project3')) + import parent.child.three + + # the paths dynamically get longer, to include the new directories + self.assertEqual(len(parent.__path__), 3) + self.assertEqual(len(parent.child.__path__), 3) + + self.assertEqual(parent.child.three.attr, 'parent child three') + + class ZipWithMissingDirectory(NamespacePackageTest): paths = ['missing_directory.zip']
