tests: fix test-bdiff to handle variance between pure and c bdiff code
authorAugie Fackler <augie@google.com>
Thu, 15 Dec 2016 11:14:00 -0500
changeset 30595 99bd5479d58b
parent 30594 ea648e8f8a34
child 30596 be520fe3a3e9
tests: fix test-bdiff to handle variance between pure and c bdiff code Obviously we'd rather patch pure to have the same algorithmic win as the C code, but this is a quick fix for the pure build since pure isn't wrong, just not as fast as it could be.
tests/test-bdiff.py
--- a/tests/test-bdiff.py	Thu Dec 15 11:04:09 2016 -0500
+++ b/tests/test-bdiff.py	Thu Dec 15 11:14:00 2016 -0500
@@ -82,18 +82,28 @@
               'x\n\n',
               diffreplace(9, 9, '', 'y\n\n'),
               'x\n\nz\n']),
-            # we should pick up abbbc. rather than bc.de as the longest match
-            ("a\nb\nb\nb\nc\n.\nd\ne\n.\nf\n",
-             "a\nb\nb\na\nb\nb\nb\nc\n.\nb\nc\n.\nd\ne\nf\n",
-             ['a\nb\nb\n',
-              diffreplace(6, 6, '', 'a\nb\nb\nb\nc\n.\n'),
-              'b\nc\n.\nd\ne\n',
-              diffreplace(16, 18, '.\n', ''),
-              'f\n']),
         ]
         for old, new, want in cases:
             self.assertEqual(self.showdiff(old, new), want)
 
+    def test_issue1295_varies_on_pure(self):
+            # we should pick up abbbc. rather than bc.de as the longest match
+        got = self.showdiff("a\nb\nb\nb\nc\n.\nd\ne\n.\nf\n",
+                            "a\nb\nb\na\nb\nb\nb\nc\n.\nb\nc\n.\nd\ne\nf\n")
+        want_c = ['a\nb\nb\n',
+                  diffreplace(6, 6, '', 'a\nb\nb\nb\nc\n.\n'),
+                  'b\nc\n.\nd\ne\n',
+                  diffreplace(16, 18, '.\n', ''),
+                  'f\n']
+        want_pure = [diffreplace(0, 0, '', 'a\nb\nb\n'),
+                     'a\nb\nb\nb\nc\n.\n',
+                     diffreplace(12, 12, '', 'b\nc\n.\n'),
+                     'd\ne\n',
+                     diffreplace(16, 18, '.\n', ''), 'f\n']
+        self.assert_(got in (want_c, want_pure),
+                     'got: %r, wanted either %r or %r' % (
+                         got, want_c, want_pure))
+
     def test_fixws(self):
         cases = [
             (" \ta\r b\t\n", "ab\n", 1),