mirror of
https://github.com/python/cpython
synced 2024-10-14 09:43:55 +00:00
exclude_empty: make the default True for DocTestFinder, and introduce it
with default False for testmod(). The real point of introducing this was so that output from doctest.master.summarize() would be the same as in 2.3, and doctest.master in 2.4 is a backward-compatability hack used only by testmod().
This commit is contained in:
parent
302bd589ad
commit
958cc89037
|
@ -848,8 +848,7 @@ class DocTestFinder:
|
|||
"""
|
||||
|
||||
def __init__(self, verbose=False, parser=DocTestParser(),
|
||||
recurse=True, _namefilter=None,
|
||||
exclude_empty=False):
|
||||
recurse=True, _namefilter=None, exclude_empty=True):
|
||||
"""
|
||||
Create a new doctest finder.
|
||||
|
||||
|
@ -862,8 +861,8 @@ def __init__(self, verbose=False, parser=DocTestParser(),
|
|||
If the optional argument `recurse` is false, then `find` will
|
||||
only examine the given object, and not any contained objects.
|
||||
|
||||
If the optional argument `exclude_empty` is true, then `find`
|
||||
will exclude tests for objects with empty docstrings.
|
||||
If the optional argument `exclude_empty` is false, then `find`
|
||||
will include tests for objects with empty docstrings.
|
||||
"""
|
||||
self._parser = parser
|
||||
self._verbose = verbose
|
||||
|
@ -1836,9 +1835,10 @@ def report_failure(self, out, test, example, got):
|
|||
|
||||
def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
|
||||
report=True, optionflags=0, extraglobs=None,
|
||||
raise_on_error=False):
|
||||
raise_on_error=False, exclude_empty=False):
|
||||
"""m=None, name=None, globs=None, verbose=None, isprivate=None,
|
||||
report=True, optionflags=0, extraglobs=None
|
||||
report=True, optionflags=0, extraglobs=None, raise_on_error=False,
|
||||
exclude_empty=False
|
||||
|
||||
Test examples in docstrings in functions and classes reachable
|
||||
from module m (or the current module if m is not supplied), starting
|
||||
|
@ -1930,7 +1930,7 @@ class doctest.Tester, then merges the results into (or creates)
|
|||
name = m.__name__
|
||||
|
||||
# Find, parse, and run all tests in the given module.
|
||||
finder = DocTestFinder(_namefilter=isprivate)
|
||||
finder = DocTestFinder(_namefilter=isprivate, exclude_empty=exclude_empty)
|
||||
|
||||
if raise_on_error:
|
||||
runner = DebugRunner(verbose=verbose, optionflags=optionflags)
|
||||
|
|
|
@ -377,8 +377,8 @@ def test_DocTestFinder(): r"""
|
|||
|
||||
>>> def no_docstring(v):
|
||||
... pass
|
||||
>>> finder.find(no_docstring) # doctest: +ELLIPSIS
|
||||
[<DocTest no_docstring from ... (no examples)>]
|
||||
>>> finder.find(no_docstring)
|
||||
[]
|
||||
|
||||
However, the optional argument `exclude_empty` to the DocTestFinder
|
||||
constructor can be used to exclude tests for objects with empty
|
||||
|
@ -414,8 +414,6 @@ def test_DocTestFinder(): r"""
|
|||
1 SampleClass
|
||||
3 SampleClass.NestedClass
|
||||
1 SampleClass.NestedClass.__init__
|
||||
0 SampleClass.NestedClass.get
|
||||
0 SampleClass.NestedClass.square
|
||||
1 SampleClass.__init__
|
||||
2 SampleClass.a_classmethod
|
||||
1 SampleClass.a_property
|
||||
|
@ -473,8 +471,6 @@ def test_DocTestFinder(): r"""
|
|||
1 some_module.SampleClass
|
||||
3 some_module.SampleClass.NestedClass
|
||||
1 some_module.SampleClass.NestedClass.__init__
|
||||
0 some_module.SampleClass.NestedClass.get
|
||||
0 some_module.SampleClass.NestedClass.square
|
||||
1 some_module.SampleClass.__init__
|
||||
2 some_module.SampleClass.a_classmethod
|
||||
1 some_module.SampleClass.a_property
|
||||
|
@ -516,6 +512,23 @@ def test_DocTestFinder(): r"""
|
|||
>>> tests = doctest.DocTestFinder(_namefilter=namefilter).find(SampleClass)
|
||||
>>> tests.sort()
|
||||
>>> for t in tests:
|
||||
... print '%2s %s' % (len(t.examples), t.name)
|
||||
1 SampleClass
|
||||
3 SampleClass.NestedClass
|
||||
1 SampleClass.NestedClass.__init__
|
||||
1 SampleClass.__init__
|
||||
1 SampleClass.double
|
||||
1 SampleClass.get
|
||||
|
||||
By default, that excluded objects with no doctests. exclude_empty=False
|
||||
tells it to include (empty) tests for objects with no doctests. This feature
|
||||
is really to support backward compatibility in what doctest.master.summarize()
|
||||
displays.
|
||||
|
||||
>>> tests = doctest.DocTestFinder(_namefilter=namefilter,
|
||||
... exclude_empty=False).find(SampleClass)
|
||||
>>> tests.sort()
|
||||
>>> for t in tests:
|
||||
... print '%2s %s' % (len(t.examples), t.name)
|
||||
1 SampleClass
|
||||
3 SampleClass.NestedClass
|
||||
|
@ -550,7 +563,7 @@ def test_DocTestFinder(): r"""
|
|||
... return base == 'SampleClass'
|
||||
>>> tests = doctest.DocTestFinder(_namefilter=namefilter).find(SampleClass)
|
||||
>>> len(tests)
|
||||
11
|
||||
9
|
||||
|
||||
Turning off Recursion
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
Loading…
Reference in a new issue