Reluctantly, rehabilitate doctest.master.
This commit is contained in:
parent
9661f9ab4f
commit
82076ef194
|
@ -1531,6 +1531,20 @@ class DocTestRunner:
|
|||
print "Test passed."
|
||||
return totalf, totalt
|
||||
|
||||
#/////////////////////////////////////////////////////////////////
|
||||
# Backward compatibility cruft to maintain doctest.master.
|
||||
#/////////////////////////////////////////////////////////////////
|
||||
def merge(self, other):
|
||||
d = self._name2ft
|
||||
for name, (f, t) in other._name2ft.items():
|
||||
if name in d:
|
||||
print "*** DocTestRunner.merge: '" + name + "' in both" \
|
||||
" testers; summing outcomes."
|
||||
f2, t2 = d[name]
|
||||
f = f + f2
|
||||
t = t + t2
|
||||
d[name] = f, t
|
||||
|
||||
class OutputChecker:
|
||||
"""
|
||||
A class used to check the whether the actual output from a doctest
|
||||
|
@ -1810,6 +1824,10 @@ class DebugRunner(DocTestRunner):
|
|||
######################################################################
|
||||
# These should be backwards compatible.
|
||||
|
||||
# For backward compatibility, a global instance of a DocTestRunner
|
||||
# class, updated by testmod.
|
||||
master = None
|
||||
|
||||
def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
|
||||
report=True, optionflags=0, extraglobs=None,
|
||||
raise_on_error=False):
|
||||
|
@ -1883,6 +1901,8 @@ def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
|
|||
displaying a summary. Invoke doctest.master.summarize(verbose)
|
||||
when you're done fiddling.
|
||||
"""
|
||||
global master
|
||||
|
||||
if isprivate is not None:
|
||||
warnings.warn("the isprivate argument is deprecated; "
|
||||
"examine DocTestFinder.find() lists instead",
|
||||
|
@ -1917,6 +1937,11 @@ def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
|
|||
if report:
|
||||
runner.summarize()
|
||||
|
||||
if master is None:
|
||||
master = runner
|
||||
else:
|
||||
master.merge(runner)
|
||||
|
||||
return runner.failures, runner.tries
|
||||
|
||||
def run_docstring_examples(f, globs, verbose=False, name="NoName",
|
||||
|
@ -2007,15 +2032,7 @@ class Tester:
|
|||
return self.testrunner.summarize(verbose)
|
||||
|
||||
def merge(self, other):
|
||||
d = self.testrunner._name2ft
|
||||
for name, (f, t) in other.testrunner._name2ft.items():
|
||||
if name in d:
|
||||
print "*** Tester.merge: '" + name + "' in both" \
|
||||
" testers; summing outcomes."
|
||||
f2, t2 = d[name]
|
||||
f = f + f2
|
||||
t = t + t2
|
||||
d[name] = f, t
|
||||
self.testrunner.merge(other.testrunner)
|
||||
|
||||
######################################################################
|
||||
## 8. Unittest Support
|
||||
|
|
|
@ -25,6 +25,7 @@ Library
|
|||
- bdist_rpm now supports command line options --force-arch,
|
||||
{pre,post}-install, {pre,post}-uninstall, and
|
||||
{prep,build,install,clean,verify}-script.
|
||||
|
||||
- SF patch #998993: The UTF-8 and the UTF-16 stateful decoders now support
|
||||
decoding incomplete input (when the input stream is temporarily exhausted).
|
||||
``codecs.StreamReader`` now implements buffering, which enables proper
|
||||
|
@ -34,6 +35,13 @@ Library
|
|||
``codecs.StreamReader.readlines()`` have a new argument ``keepends``.
|
||||
Trailing "\n"s will be stripped from the lines if ``keepends`` is false.
|
||||
|
||||
- ``doctest.master was`` put back in, and ``doctest.testmod()`` once again
|
||||
updates it. This isn't good, because every ``testmod()`` call
|
||||
contributes to bloating the "hidden" state of ``doctest.master``, but
|
||||
some old code apparently relies on it. For now, all we can do is
|
||||
encourage people to stitch doctests together via doctest's unittest
|
||||
integration features instead. It would help if those were documented.
|
||||
|
||||
Build
|
||||
-----
|
||||
|
||||
|
|
Loading…
Reference in New Issue