[Python-checkins] python/dist/src/Lib doctest.py,1.89,1.90
tim_one at users.sourceforge.net
tim_one at users.sourceforge.net
Thu Aug 26 07:22:01 CEST 2004
Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18753/Lib
Modified Files:
doctest.py
Log Message:
_do_a_fancy_diff(): Pay no attention to the ellipses behind the curtain.
While a fancy diff can be confusing in the presence of ellipses, so far
I'm finding (2-0-0) that it's much more a major aid in narrowing down the
possibilities when an ellipsis-slinging test fails. So we no longer
refuse to do a fancy diff just because of ellipses.
This isn't ideal; it's just better.
Index: doctest.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/doctest.py,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -d -r1.89 -r1.90
--- doctest.py 26 Aug 2004 03:00:24 -0000 1.89
+++ doctest.py 26 Aug 2004 05:21:59 -0000 1.90
@@ -1596,14 +1596,20 @@
REPORT_CDIFF |
REPORT_NDIFF):
return False
+
# If expected output uses ellipsis, a meaningful fancy diff is
- # too hard.
- if optionflags & ELLIPSIS and ELLIPSIS_MARKER in want:
- return False
+ # too hard ... or maybe not. In two real-life failures Tim saw,
+ # a diff was a major help anyway, so this is commented out.
+ # [todo] _ellipsis_match() knows which pieces do and don't match,
+ # and could be the basis for a kick-ass diff in this case.
+ ##if optionflags & ELLIPSIS and ELLIPSIS_MARKER in want:
+ ## return False
+
# ndiff does intraline difference marking, so can be useful even
- # for 1-line inputs.
+ # for 1-line differences.
if optionflags & REPORT_NDIFF:
return True
+
# The other diff types need at least a few lines to be helpful.
return want.count('\n') > 2 and got.count('\n') > 2
@@ -1620,9 +1626,7 @@
if not (optionflags & DONT_ACCEPT_BLANKLINE):
got = re.sub('(?m)^[ ]*(?=\n)', BLANKLINE_MARKER, got)
- # Check if we should use diff. Don't use diff if the actual
- # or expected outputs are too short, or if the expected output
- # contains an ellipsis marker.
+ # Check if we should use diff.
if self._do_a_fancy_diff(want, got, optionflags):
# Split want & got into lines.
want_lines = [l+'\n' for l in want.split('\n')]
More information about the Python-checkins
mailing list