Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f879e32

Browse files
committed
Added test for namespace package dynamic path updates.
1 parent 739ae56 commit f879e32

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

Lib/test/test_namespace_pkgs.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,51 @@ def test_non_namespace_package_takes_precedence(self):
206206
self.assertNotIn('namespace', str(foo.__loader__).lower())
207207

208208

209+
class DynamicPathCalculation(NamespacePackageTest):
210+
paths = ['project1', 'project2']
211+
212+
def test_project3_fails(self):
213+
import parent.child.one
214+
self.assertEqual(len(parent.__path__), 2)
215+
self.assertEqual(len(parent.child.__path__), 2)
216+
import parent.child.two
217+
self.assertEqual(len(parent.__path__), 2)
218+
self.assertEqual(len(parent.child.__path__), 2)
219+
220+
self.assertEqual(parent.child.one.attr, 'parent child one')
221+
self.assertEqual(parent.child.two.attr, 'parent child two')
222+
223+
with self.assertRaises(ImportError):
224+
import parent.child.three
225+
226+
self.assertEqual(len(parent.__path__), 2)
227+
self.assertEqual(len(parent.child.__path__), 2)
228+
229+
def test_project3_succeeds(self):
230+
import parent.child.one
231+
self.assertEqual(len(parent.__path__), 2)
232+
self.assertEqual(len(parent.child.__path__), 2)
233+
import parent.child.two
234+
self.assertEqual(len(parent.__path__), 2)
235+
self.assertEqual(len(parent.child.__path__), 2)
236+
237+
self.assertEqual(parent.child.one.attr, 'parent child one')
238+
self.assertEqual(parent.child.two.attr, 'parent child two')
239+
240+
with self.assertRaises(ImportError):
241+
import parent.child.three
242+
243+
# now add project3
244+
sys.path.append(os.path.join(self.root, 'project3'))
245+
import parent.child.three
246+
247+
# the paths dynamically get longer, to include the new directories
248+
self.assertEqual(len(parent.__path__), 3)
249+
self.assertEqual(len(parent.child.__path__), 3)
250+
251+
self.assertEqual(parent.child.three.attr, 'parent child three')
252+
253+
209254
class ZipWithMissingDirectory(NamespacePackageTest):
210255
paths = ['missing_directory.zip']
211256

0 commit comments

Comments
 (0)