Pass importmode to import_path in DoctestModule

This allows doctest to be used with namespace modules
This commit is contained in:
Alice Purcell 2022-06-29 14:38:59 +01:00
parent 06738e36df
commit c34eaaaa1c
3 changed files with 28 additions and 1 deletions

View File

@ -0,0 +1 @@
Doctests now respect the ``--import-mode`` flag.

View File

@ -542,7 +542,11 @@ class DoctestModule(pytest.Module):
)
else:
try:
module = import_path(self.path, root=self.config.rootpath)
module = import_path(
self.path,
root=self.config.rootpath,
mode=self.config.getoption("importmode"),
)
except ImportError:
if self.config.getvalue("doctest_ignore_import_errors"):
pytest.skip("unable to import module %r" % self.path)

View File

@ -113,6 +113,28 @@ class TestDoctests:
reprec = pytester.inline_run(p)
reprec.assertoutcome(failed=1)
def test_importmode(self, pytester: Pytester):
p = pytester.makepyfile(
**{
"namespacepkg/innerpkg/__init__.py": "",
"namespacepkg/innerpkg/a.py": """
def some_func():
return 42
""",
"namespacepkg/innerpkg/b.py": """
from namespacepkg.innerpkg.a import some_func
def my_func():
'''
>>> my_func()
42
'''
return some_func()
""",
}
)
reprec = pytester.inline_run(p, "--doctest-modules", "--import-mode=importlib")
reprec.assertoutcome(passed=1)
def test_new_pattern(self, pytester: Pytester):
p = pytester.maketxtfile(
xdoc="""