[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