Merge in #67 bugfix.

This commit is contained in:
Georg Brandl 2008-12-15 20:00:58 +01:00
commit f21769a232
3 changed files with 18 additions and 7 deletions

View File

@ -45,6 +45,9 @@ New features added
Release 0.5.1 (in development) 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 * #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 dvipng on Windows. For that to work, the ``pngmath_latex`` and
``pngmath_dvipng`` options are no longer split into command and ``pngmath_dvipng`` options are no longer split into command and

View File

@ -266,12 +266,13 @@ class Builder(object):
# finish (write static files etc.) # finish (write static files etc.)
self.finish() self.finish()
status = self.app.statuscode == 0 and 'succeeded' or 'finished with problems'
if self.app._warncount: if self.app._warncount:
self.info(bold('build succeeded, %s warning%s.' % self.info(bold('build %s, %s warning%s.' %
(self.app._warncount, (status, self.app._warncount,
self.app._warncount != 1 and 's' or ''))) self.app._warncount != 1 and 's' or '')))
else: else:
self.info(bold('build succeeded.')) self.info(bold('build %s.' % status))
def write(self, build_docnames, updated_docnames, method='update'): def write(self, build_docnames, updated_docnames, method='update'):
if build_docnames is None or build_docnames == ['__all__']: if build_docnames is None or build_docnames == ['__all__']:

View File

@ -184,6 +184,12 @@ Results of doctest builder run on %s
self.info(text, nonl=True) self.info(text, nonl=True)
self.outfile.write(text) 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): def get_target_uri(self, docname, typ=None):
return '' return ''
@ -205,6 +211,9 @@ Doctest summary
self.setup_failures, s(self.setup_failures))) self.setup_failures, s(self.setup_failures)))
self.outfile.close() self.outfile.close()
if self.total_failures or self.setup_failures:
self.app.statuscode = 1
sys.path[0:0] = self.config.doctest_path sys.path[0:0] = self.config.doctest_path
def write(self, build_docnames, updated_docnames, method='update'): def write(self, build_docnames, updated_docnames, method='update'):
@ -287,7 +296,7 @@ Doctest summary
setup_doctest.globs = ns setup_doctest.globs = ns
old_f = self.setup_runner.failures old_f = self.setup_runner.failures
self.type = 'exec' # the snippet may contain multiple statements 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) clear_globs=False)
if self.setup_runner.failures > old_f: if self.setup_runner.failures > old_f:
# don't run the group # don't run the group
@ -297,8 +306,6 @@ Doctest summary
test = parser.get_doctest(code[0].code, {}, test = parser.get_doctest(code[0].code, {},
group.name, filename, code[0].lineno) group.name, filename, code[0].lineno)
if not test.examples: if not test.examples:
self._out('WARNING: no examples in doctest block at '
+ filename + ', line %s\n' % code[0].lineno)
continue continue
for example in test.examples: for example in test.examples:
# apply directive's comparison options # apply directive's comparison options
@ -320,7 +327,7 @@ Doctest summary
# DocTest.__init__ copies the globs namespace, which we don't want # DocTest.__init__ copies the globs namespace, which we don't want
test.globs = ns test.globs = ns
# also don't clear the globs namespace after running the doctest # 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): def setup(app):