bpo-24746: Avoid stripping trailing whitespace in doctest fancy diff (#10639)
This commit is contained in:
parent
a234e14839
commit
cbb1645993
|
@ -1690,8 +1690,6 @@ class OutputChecker:
|
||||||
kind = 'ndiff with -expected +actual'
|
kind = 'ndiff with -expected +actual'
|
||||||
else:
|
else:
|
||||||
assert 0, 'Bad diff option'
|
assert 0, 'Bad diff option'
|
||||||
# Remove trailing whitespace on diff output.
|
|
||||||
diff = [line.rstrip() + '\n' for line in diff]
|
|
||||||
return 'Differences (%s):\n' % kind + _indent(''.join(diff))
|
return 'Differences (%s):\n' % kind + _indent(''.join(diff))
|
||||||
|
|
||||||
# If we're not using diff, then simply list the expected
|
# If we're not using diff, then simply list the expected
|
||||||
|
|
|
@ -2451,6 +2451,11 @@ def test_unittest_reportflags():
|
||||||
Then the default eporting options are ignored:
|
Then the default eporting options are ignored:
|
||||||
|
|
||||||
>>> result = suite.run(unittest.TestResult())
|
>>> result = suite.run(unittest.TestResult())
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
*NOTE*: These doctest are intentionally not placed in raw string to depict
|
||||||
|
the trailing whitespace using `\x20` in the diff below.
|
||||||
|
|
||||||
>>> print(result.failures[0][1]) # doctest: +ELLIPSIS
|
>>> print(result.failures[0][1]) # doctest: +ELLIPSIS
|
||||||
Traceback ...
|
Traceback ...
|
||||||
Failed example:
|
Failed example:
|
||||||
|
@ -2464,7 +2469,7 @@ def test_unittest_reportflags():
|
||||||
Differences (ndiff with -expected +actual):
|
Differences (ndiff with -expected +actual):
|
||||||
a
|
a
|
||||||
- <BLANKLINE>
|
- <BLANKLINE>
|
||||||
+
|
+\x20
|
||||||
b
|
b
|
||||||
<BLANKLINE>
|
<BLANKLINE>
|
||||||
<BLANKLINE>
|
<BLANKLINE>
|
||||||
|
@ -2953,6 +2958,47 @@ Invalid doctest option:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def test_no_trailing_whitespace_stripping():
|
||||||
|
r"""
|
||||||
|
The fancy reports had a bug for a long time where any trailing whitespace on
|
||||||
|
the reported diff lines was stripped, making it impossible to see the
|
||||||
|
differences in line reported as different that differed only in the amount of
|
||||||
|
trailing whitespace. The whitespace still isn't particularly visible unless
|
||||||
|
you use NDIFF, but at least it is now there to be found.
|
||||||
|
|
||||||
|
*NOTE*: This snippet was intentionally put inside a raw string to get rid of
|
||||||
|
leading whitespace error in executing the example below
|
||||||
|
|
||||||
|
>>> def f(x):
|
||||||
|
... r'''
|
||||||
|
... >>> print('\n'.join(['a ', 'b']))
|
||||||
|
... a
|
||||||
|
... b
|
||||||
|
... '''
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
*NOTE*: These doctest are not placed in raw string to depict the trailing whitespace
|
||||||
|
using `\x20`
|
||||||
|
|
||||||
|
>>> test = doctest.DocTestFinder().find(f)[0]
|
||||||
|
>>> flags = doctest.REPORT_NDIFF
|
||||||
|
>>> doctest.DocTestRunner(verbose=False, optionflags=flags).run(test)
|
||||||
|
... # doctest: +ELLIPSIS
|
||||||
|
**********************************************************************
|
||||||
|
File ..., line 3, in f
|
||||||
|
Failed example:
|
||||||
|
print('\n'.join(['a ', 'b']))
|
||||||
|
Differences (ndiff with -expected +actual):
|
||||||
|
- a
|
||||||
|
+ a
|
||||||
|
b
|
||||||
|
TestResults(failed=1, attempted=1)
|
||||||
|
|
||||||
|
*NOTE*: `\x20` is for checking the trailing whitespace on the +a line above.
|
||||||
|
We cannot use actual spaces there, as a commit hook prevents from committing
|
||||||
|
patches that contain trailing whitespace. More info on Issue 24746.
|
||||||
|
"""
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
## Main
|
## Main
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Avoid stripping trailing whitespace in doctest fancy diff. Orignial patch by
|
||||||
|
R. David Murray & Jairo Trad. Enhanced by Sanyam Khurana.
|
Loading…
Reference in New Issue