Skip to content

Commit 33b7322

Browse files
committed
Add unit test for extension module with submodule
For portability reasons, this unit test only simulates how an extension model would look like. It doesn't actually package an extension module, because then we'd have to provide a separte extension module for each platform, os, and python version.
1 parent f379105 commit 33b7322

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

pdoc/test/__init__.py

+29
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,35 @@ def test_module(self):
472472
self.assertEqual(sorted(m.name for m in m.submodules()),
473473
[EXAMPLE_MODULE + '.' + m for m in submodules])
474474

475+
@ignore_warnings
476+
def test_module_without_path(self):
477+
# GH-319: https://github.com/pdoc3/pdoc/issues/319
478+
parent_module = ModuleType('parent_module')
479+
child_module1 = ModuleType('child_module1')
480+
child_module2 = ModuleType('child_module2')
481+
grandchild_module = ModuleType('grandchild_module')
482+
483+
child_module1.grandchild_module = grandchild_module
484+
child_module1.__all__ = ['grandchild_module']
485+
486+
parent_module.child_module1 = child_module1
487+
parent_module.child_module2 = child_module2
488+
parent_module.__all__ = ['child_module1', 'child_module2']
489+
490+
assert not hasattr(parent_module, '__path__')
491+
assert not hasattr(child_module1, '__path__')
492+
assert not hasattr(child_module2, '__path__')
493+
assert not hasattr(grandchild_module, '__path__')
494+
495+
parent_module_pdoc = pdoc.Module(parent_module)
496+
497+
children_modules_pdoc = sorted(parent_module_pdoc.submodules(), key=lambda m: m.name)
498+
self.assertEqual(
499+
[m.name for m in children_modules_pdoc], ['child_module1', 'child_module2'])
500+
self.assertEqual(
501+
[m.name for m in children_modules_pdoc[0].submodules()], ['grandchild_module'])
502+
self.assertEqual(children_modules_pdoc[1].submodules(), [])
503+
475504
def test_Module_find_class(self):
476505
class A:
477506
pass

0 commit comments

Comments
 (0)