3 new commits in pytest: https://bitbucket.org/hpk42/pytest/commits/bac853daacf5/ Changeset: bac853daacf5 Branch: ignore-doctest-import-errors User: cpcloud Date: 2015-02-08 06:25:23+00:00 Summary: Add option to ignore import errors in doctests Affected #: 1 file
diff -r fa62c5c63c2fb5870852676d8d8899b9656214fd -r bac853daacf5d2ba3d1ca1e5084200ecde76d88d _pytest/doctest.py --- a/_pytest/doctest.py +++ b/_pytest/doctest.py @@ -17,6 +17,10 @@ action="store", default="test*.txt", metavar="pat", help="doctests file matching pattern, default: test*.txt", dest="doctestglob") + group.addoption("--doctest-ignore-import-errors", + action="store_true", default=False, + help="ignore doctest ImportErrors", + dest="doctest_ignore_import_errors") def pytest_collect_file(path, parent): config = parent.config @@ -130,7 +134,13 @@ if self.fspath.basename == "conftest.py": module = self.config._conftest.importconftest(self.fspath) else: - module = self.fspath.pyimport() + try: + module = self.fspath.pyimport() + except ImportError: + if self.config.getvalue('doctest_ignore_import_errors'): + pytest.skip('unable to import module %r' % self.fspath) + else: + raise # satisfy `FixtureRequest` constructor... self.funcargs = {} self._fixtureinfo = FuncFixtureInfo((), [], {}) @@ -138,9 +148,9 @@ doctest_globals = dict(getfixture=fixture_request.getfuncargvalue) # uses internal doctest module parsing mechanism finder = doctest.DocTestFinder() - optionflags= get_optionflags(self) + optionflags = get_optionflags(self) runner = doctest.DebugRunner(verbose=0, optionflags=optionflags) for test in finder.find(module, module.__name__, extraglobs=doctest_globals): - if test.examples: # skip empty doctests + if test.examples: # skip empty doctests yield DoctestItem(test.name, self, runner, test) https://bitbucket.org/hpk42/pytest/commits/2b5d32cec885/ Changeset: 2b5d32cec885 Branch: ignore-doctest-import-errors User: cpcloud Date: 2015-02-26 17:39:36+00:00 Summary: Add test for command line usage Affected #: 1 file diff -r bac853daacf5d2ba3d1ca1e5084200ecde76d88d -r 2b5d32cec885a1faee1f9be15807a455d5534918 testing/test_doctest.py --- a/testing/test_doctest.py +++ b/testing/test_doctest.py @@ -349,3 +349,19 @@ """) reprec = testdir.inline_run(p, "--doctest-glob=x*.txt") reprec.assertoutcome(failed=1, passed=0) + + def test_ignore_import_errors_on_doctest(self, testdir): + p = testdir.makepyfile(""" + import asdf + + def add_one(x): + ''' + >>> add_one(1) + 2 + ''' + return x + 1 + """) + + reprec = testdir.inline_run(p, "--doctest-modules", + "--doctest-ignore-import-errors") + reprec.assertoutcome(skipped=1, failed=1, passed=0) https://bitbucket.org/hpk42/pytest/commits/eeaef9601d3f/ Changeset: eeaef9601d3f User: hpk42 Date: 2015-02-26 20:59:54+00:00 Summary: Merged in cpcloud/pytest/ignore-doctest-import-errors (pull request #243) Add option to ignore import errors in doctests Affected #: 2 files diff -r 6104c7ea0dccd13b892fa021a2fc989f60a8ff59 -r eeaef9601d3f2996c3bbbc4c0301a859d8bc35b5 _pytest/doctest.py --- a/_pytest/doctest.py +++ b/_pytest/doctest.py @@ -17,6 +17,10 @@ action="store", default="test*.txt", metavar="pat", help="doctests file matching pattern, default: test*.txt", dest="doctestglob") + group.addoption("--doctest-ignore-import-errors", + action="store_true", default=False, + help="ignore doctest ImportErrors", + dest="doctest_ignore_import_errors") def pytest_collect_file(path, parent): config = parent.config @@ -130,7 +134,13 @@ if self.fspath.basename == "conftest.py": module = self.config._conftest.importconftest(self.fspath) else: - module = self.fspath.pyimport() + try: + module = self.fspath.pyimport() + except ImportError: + if self.config.getvalue('doctest_ignore_import_errors'): + pytest.skip('unable to import module %r' % self.fspath) + else: + raise # satisfy `FixtureRequest` constructor... self.funcargs = {} self._fixtureinfo = FuncFixtureInfo((), [], {}) @@ -138,9 +148,9 @@ doctest_globals = dict(getfixture=fixture_request.getfuncargvalue) # uses internal doctest module parsing mechanism finder = doctest.DocTestFinder() - optionflags= get_optionflags(self) + optionflags = get_optionflags(self) runner = doctest.DebugRunner(verbose=0, optionflags=optionflags) for test in finder.find(module, module.__name__, extraglobs=doctest_globals): - if test.examples: # skip empty doctests + if test.examples: # skip empty doctests yield DoctestItem(test.name, self, runner, test) diff -r 6104c7ea0dccd13b892fa021a2fc989f60a8ff59 -r eeaef9601d3f2996c3bbbc4c0301a859d8bc35b5 testing/test_doctest.py --- a/testing/test_doctest.py +++ b/testing/test_doctest.py @@ -341,3 +341,19 @@ """) reprec = testdir.inline_run(p, "--doctest-glob=x*.txt") reprec.assertoutcome(failed=1, passed=0) + + def test_ignore_import_errors_on_doctest(self, testdir): + p = testdir.makepyfile(""" + import asdf + + def add_one(x): + ''' + >>> add_one(1) + 2 + ''' + return x + 1 + """) + + reprec = testdir.inline_run(p, "--doctest-modules", + "--doctest-ignore-import-errors") + reprec.assertoutcome(skipped=1, failed=1, passed=0) Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit