mirror of https://github.com/python/cpython
Fixed bug in line-number finding for examples (DocTestParser wasn't
updating line numbers correctly for bare prompts & examples containing only comments).
This commit is contained in:
parent
f04d8a8898
commit
b51b23405b
|
@ -552,10 +552,8 @@ class DocTestParser:
|
||||||
(source, want) = self._parse_example(m, name, lineno)
|
(source, want) = self._parse_example(m, name, lineno)
|
||||||
# Extract extra options from the source.
|
# Extract extra options from the source.
|
||||||
options = self._find_options(source, name, lineno)
|
options = self._find_options(source, name, lineno)
|
||||||
# If it contains no real source, then ignore it.
|
|
||||||
if self._IS_BLANK_OR_COMMENT(source):
|
|
||||||
continue
|
|
||||||
# Create an Example, and add it to the list.
|
# Create an Example, and add it to the list.
|
||||||
|
if not self._IS_BLANK_OR_COMMENT(source):
|
||||||
examples.append( Example(source, want, lineno,
|
examples.append( Example(source, want, lineno,
|
||||||
len(m.group('indent')), options) )
|
len(m.group('indent')), options) )
|
||||||
# Update lineno (lines inside this example)
|
# Update lineno (lines inside this example)
|
||||||
|
|
|
@ -253,7 +253,6 @@ will raise a ValueError:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# [XX] test that it's getting line numbers right.
|
|
||||||
def test_DocTestFinder(): r"""
|
def test_DocTestFinder(): r"""
|
||||||
Unit tests for the `DocTestFinder` class.
|
Unit tests for the `DocTestFinder` class.
|
||||||
|
|
||||||
|
@ -450,6 +449,30 @@ using the `recurse` flag:
|
||||||
>>> for t in tests:
|
>>> for t in tests:
|
||||||
... print '%2s %s' % (len(t.examples), t.name)
|
... print '%2s %s' % (len(t.examples), t.name)
|
||||||
1 SampleClass
|
1 SampleClass
|
||||||
|
|
||||||
|
Line numbers
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
DocTestFinder finds the line number of each example:
|
||||||
|
|
||||||
|
>>> def f(x):
|
||||||
|
... '''
|
||||||
|
... >>> x = 12
|
||||||
|
...
|
||||||
|
... some text
|
||||||
|
...
|
||||||
|
... >>> # examples are not created for comments & bare prompts.
|
||||||
|
... >>>
|
||||||
|
... ...
|
||||||
|
...
|
||||||
|
... >>> for x in range(10):
|
||||||
|
... ... print x,
|
||||||
|
... 0 1 2 3 4 5 6 7 8 9
|
||||||
|
... >>> x/2
|
||||||
|
... 6
|
||||||
|
... '''
|
||||||
|
>>> test = doctest.DocTestFinder().find(f)[0]
|
||||||
|
>>> [e.lineno for e in test.examples]
|
||||||
|
[1, 9, 12]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class test_DocTestRunner:
|
class test_DocTestRunner:
|
||||||
|
@ -892,7 +915,7 @@ comment of the form ``# doctest: -OPTION``:
|
||||||
... optionflags=doctest.ELLIPSIS).run(test)
|
... optionflags=doctest.ELLIPSIS).run(test)
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
Failure in example: print range(10) # doctest: -ELLIPSIS
|
Failure in example: print range(10) # doctest: -ELLIPSIS
|
||||||
from line #6 of f
|
from line #5 of f
|
||||||
Expected: [0, 1, ..., 9]
|
Expected: [0, 1, ..., 9]
|
||||||
Got: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
Got: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
(1, 2)
|
(1, 2)
|
||||||
|
|
Loading…
Reference in New Issue