bpo-24746: Avoid stripping trailing whitespace in doctest fancy diff (#10639)

This commit is contained in:
Sanyam Khurana 2019-01-09 19:08:38 +05:30 committed by Senthil Kumaran
parent a234e14839
commit cbb1645993
3 changed files with 49 additions and 3 deletions

View File

@ -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

View File

@ -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
###################################################################### ######################################################################

View File

@ -0,0 +1,2 @@
Avoid stripping trailing whitespace in doctest fancy diff. Orignial patch by
R. David Murray & Jairo Trad. Enhanced by Sanyam Khurana.