From 1d8f1f1520946ad8a93f7730e950c3a07e7bad82 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 15 Dec 2008 19:52:59 +0100 Subject: [PATCH 1/2] Remove duplicate warning. --- sphinx/ext/doctest.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/sphinx/ext/doctest.py b/sphinx/ext/doctest.py index 58a724eb3..0ea840311 100644 --- a/sphinx/ext/doctest.py +++ b/sphinx/ext/doctest.py @@ -290,8 +290,6 @@ Doctest summary test = parser.get_doctest(code[0].code, {}, group.name, filename, code[0].lineno) if not test.examples: - self._out('WARNING: no examples in doctest block at ' - + filename + ', line %s\n' % code[0].lineno) continue for example in test.examples: # apply directive's comparison options From 04f02b34d076c88050d77a117192b2777bd93000 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 15 Dec 2008 19:59:23 +0100 Subject: [PATCH 2/2] Fix #67: Output warnings about failed doctests in the doctest extension even when running in quiet mode. --- CHANGES | 3 +++ sphinx/builder.py | 7 ++++--- sphinx/ext/doctest.py | 13 +++++++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index 0a22fbacc..eb4eccc59 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ Release 0.5.1 (in development) ============================== +* #67: Output warnings about failed doctests in the doctest extension + even when running in quiet mode. + * #72: In pngmath, make it possible to give a full path to LaTeX and dvipng on Windows. For that to work, the ``pngmath_latex`` and ``pngmath_dvipng`` options are no longer split into command and diff --git a/sphinx/builder.py b/sphinx/builder.py index 1d16c8eff..81fc24862 100644 --- a/sphinx/builder.py +++ b/sphinx/builder.py @@ -291,12 +291,13 @@ class Builder(object): # finish (write static files etc.) self.finish() + status = self.app.statuscode == 0 and 'succeeded' or 'finished with problems' if self.app._warncount: - self.info(bold('build succeeded, %s warning%s.' % - (self.app._warncount, + self.info(bold('build %s, %s warning%s.' % + (status, self.app._warncount, self.app._warncount != 1 and 's' or ''))) else: - self.info(bold('build succeeded.')) + self.info(bold('build %s.' % status)) def write(self, build_docnames, updated_docnames, method='update'): if build_docnames is None or build_docnames == ['__all__']: diff --git a/sphinx/ext/doctest.py b/sphinx/ext/doctest.py index 0ea840311..87c8cf177 100644 --- a/sphinx/ext/doctest.py +++ b/sphinx/ext/doctest.py @@ -181,6 +181,12 @@ Results of doctest builder run on %s self.info(text, nonl=True) self.outfile.write(text) + def _warn_out(self, text): + self.info(text, nonl=True) + if self.app.quiet: + self.warn(text) + self.outfile.write(text) + def get_target_uri(self, docname, typ=None): return '' @@ -202,6 +208,9 @@ Doctest summary self.setup_failures, s(self.setup_failures))) self.outfile.close() + if self.total_failures or self.setup_failures: + self.app.statuscode = 1 + sys.path[0:0] = self.config.doctest_path def write(self, build_docnames, updated_docnames, method='update'): @@ -280,7 +289,7 @@ Doctest summary setup_doctest.globs = ns old_f = self.setup_runner.failures self.type = 'exec' # the snippet may contain multiple statements - self.setup_runner.run(setup_doctest, out=self._out, + self.setup_runner.run(setup_doctest, out=self._warn_out, clear_globs=False) if self.setup_runner.failures > old_f: # don't run the group @@ -311,7 +320,7 @@ Doctest summary # DocTest.__init__ copies the globs namespace, which we don't want test.globs = ns # also don't clear the globs namespace after running the doctest - self.test_runner.run(test, out=self._out, clear_globs=False) + self.test_runner.run(test, out=self._warn_out, clear_globs=False) def setup(app):