--- a/tests/test-bdiff.py Sat Oct 05 10:29:34 2019 -0400
+++ b/tests/test-bdiff.py Sun Oct 06 09:45:02 2019 -0400
@@ -3,25 +3,28 @@
import struct
import unittest
-from mercurial import (
- mdiff,
-)
+from mercurial import mdiff
-class diffreplace(
- collections.namedtuple('diffreplace', 'start end from_ to')):
+
+class diffreplace(collections.namedtuple('diffreplace', 'start end from_ to')):
def __repr__(self):
return 'diffreplace(%r, %r, %r, %r)' % self
+
class BdiffTests(unittest.TestCase):
-
def assert_bdiff_applies(self, a, b):
d = mdiff.textdiff(a, b)
c = a
if d:
c = mdiff.patches(a, [d])
self.assertEqual(
- c, b, ("bad diff+patch result from\n %r to\n "
- "%r: \nbdiff: %r\npatched: %r" % (a, b, d, c[:200])))
+ c,
+ b,
+ (
+ "bad diff+patch result from\n %r to\n "
+ "%r: \nbdiff: %r\npatched: %r" % (a, b, d, c[:200])
+ ),
+ )
def assert_bdiff(self, a, b):
self.assert_bdiff_applies(a, b)
@@ -58,11 +61,11 @@
q = 0
actions = []
while pos < len(bin):
- p1, p2, l = struct.unpack(">lll", bin[pos:pos + 12])
+ p1, p2, l = struct.unpack(">lll", bin[pos : pos + 12])
pos += 12
if p1:
actions.append(a[q:p1])
- actions.append(diffreplace(p1, p2, a[p1:p2], bin[pos:pos + l]))
+ actions.append(diffreplace(p1, p2, a[p1:p2], bin[pos : pos + l]))
pos += l
q = p2
if q < len(a):
@@ -71,37 +74,55 @@
def test_issue1295(self):
cases = [
- (b"x\n\nx\n\nx\n\nx\n\nz\n", b"x\n\nx\n\ny\n\nx\n\nx\n\nz\n",
- [b'x\n\nx\n\n',
- diffreplace(6, 6, b'', b'y\n\n'),
- b'x\n\nx\n\nz\n']),
- (b"x\n\nx\n\nx\n\nx\n\nz\n", b"x\n\nx\n\ny\n\nx\n\ny\n\nx\n\nz\n",
- [b'x\n\nx\n\n',
- diffreplace(6, 6, b'', b'y\n\n'),
- b'x\n\n',
- diffreplace(9, 9, b'', b'y\n\n'),
- b'x\n\nz\n']),
+ (
+ b"x\n\nx\n\nx\n\nx\n\nz\n",
+ b"x\n\nx\n\ny\n\nx\n\nx\n\nz\n",
+ [
+ b'x\n\nx\n\n',
+ diffreplace(6, 6, b'', b'y\n\n'),
+ b'x\n\nx\n\nz\n',
+ ],
+ ),
+ (
+ b"x\n\nx\n\nx\n\nx\n\nz\n",
+ b"x\n\nx\n\ny\n\nx\n\ny\n\nx\n\nz\n",
+ [
+ b'x\n\nx\n\n',
+ diffreplace(6, 6, b'', b'y\n\n'),
+ b'x\n\n',
+ diffreplace(9, 9, b'', b'y\n\n'),
+ b'x\n\nz\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(b"a\nb\nb\nb\nc\n.\nd\ne\n.\nf\n",
- b"a\nb\nb\na\nb\nb\nb\nc\n.\nb\nc\n.\nd\ne\nf\n")
- want_c = [b'a\nb\nb\n',
- diffreplace(6, 6, b'', b'a\nb\nb\nb\nc\n.\n'),
- b'b\nc\n.\nd\ne\n',
- diffreplace(16, 18, b'.\n', b''),
- b'f\n']
- want_pure = [diffreplace(0, 0, b'', b'a\nb\nb\n'),
- b'a\nb\nb\nb\nc\n.\n',
- diffreplace(12, 12, b'', b'b\nc\n.\n'),
- b'd\ne\n',
- diffreplace(16, 18, b'.\n', b''), b'f\n']
- self.assertTrue(got in (want_c, want_pure),
- 'got: %r, wanted either %r or %r' % (
- got, want_c, want_pure))
+ # we should pick up abbbc. rather than bc.de as the longest match
+ got = self.showdiff(
+ b"a\nb\nb\nb\nc\n.\nd\ne\n.\nf\n",
+ b"a\nb\nb\na\nb\nb\nb\nc\n.\nb\nc\n.\nd\ne\nf\n",
+ )
+ want_c = [
+ b'a\nb\nb\n',
+ diffreplace(6, 6, b'', b'a\nb\nb\nb\nc\n.\n'),
+ b'b\nc\n.\nd\ne\n',
+ diffreplace(16, 18, b'.\n', b''),
+ b'f\n',
+ ]
+ want_pure = [
+ diffreplace(0, 0, b'', b'a\nb\nb\n'),
+ b'a\nb\nb\nb\nc\n.\n',
+ diffreplace(12, 12, b'', b'b\nc\n.\n'),
+ b'd\ne\n',
+ diffreplace(16, 18, b'.\n', b''),
+ b'f\n',
+ ]
+ self.assertTrue(
+ got in (want_c, want_pure),
+ 'got: %r, wanted either %r or %r' % (got, want_c, want_pure),
+ )
def test_fixws(self):
cases = [
@@ -113,39 +134,55 @@
for a, b, allws in cases:
c = mdiff.fixws(a, allws)
self.assertEqual(
- c, b, 'fixws(%r) want %r got %r (allws=%r)' % (a, b, c, allws))
+ c, b, 'fixws(%r) want %r got %r (allws=%r)' % (a, b, c, allws)
+ )
def test_nice_diff_for_trivial_change(self):
- self.assertEqual(self.showdiff(
- b''.join(b'<%d\n-\n' % i for i in range(5)),
- b''.join(b'>%d\n-\n' % i for i in range(5))),
- [diffreplace(0, 3, b'<0\n', b'>0\n'),
- b'-\n',
- diffreplace(5, 8, b'<1\n', b'>1\n'),
- b'-\n',
- diffreplace(10, 13, b'<2\n', b'>2\n'),
- b'-\n',
- diffreplace(15, 18, b'<3\n', b'>3\n'),
- b'-\n',
- diffreplace(20, 23, b'<4\n', b'>4\n'),
- b'-\n'])
+ self.assertEqual(
+ self.showdiff(
+ b''.join(b'<%d\n-\n' % i for i in range(5)),
+ b''.join(b'>%d\n-\n' % i for i in range(5)),
+ ),
+ [
+ diffreplace(0, 3, b'<0\n', b'>0\n'),
+ b'-\n',
+ diffreplace(5, 8, b'<1\n', b'>1\n'),
+ b'-\n',
+ diffreplace(10, 13, b'<2\n', b'>2\n'),
+ b'-\n',
+ diffreplace(15, 18, b'<3\n', b'>3\n'),
+ b'-\n',
+ diffreplace(20, 23, b'<4\n', b'>4\n'),
+ b'-\n',
+ ],
+ )
def test_prefer_appending(self):
# 1 line to 3 lines
- self.assertEqual(self.showdiff(b'a\n', b'a\n' * 3),
- [b'a\n', diffreplace(2, 2, b'', b'a\na\n')])
+ self.assertEqual(
+ self.showdiff(b'a\n', b'a\n' * 3),
+ [b'a\n', diffreplace(2, 2, b'', b'a\na\n')],
+ )
# 1 line to 5 lines
- self.assertEqual(self.showdiff(b'a\n', b'a\n' * 5),
- [b'a\n', diffreplace(2, 2, b'', b'a\na\na\na\n')])
+ self.assertEqual(
+ self.showdiff(b'a\n', b'a\n' * 5),
+ [b'a\n', diffreplace(2, 2, b'', b'a\na\na\na\n')],
+ )
def test_prefer_removing_trailing(self):
# 3 lines to 1 line
- self.assertEqual(self.showdiff(b'a\n' * 3, b'a\n'),
- [b'a\n', diffreplace(2, 6, b'a\na\n', b'')])
+ self.assertEqual(
+ self.showdiff(b'a\n' * 3, b'a\n'),
+ [b'a\n', diffreplace(2, 6, b'a\na\n', b'')],
+ )
# 5 lines to 1 line
- self.assertEqual(self.showdiff(b'a\n' * 5, b'a\n'),
- [b'a\n', diffreplace(2, 10, b'a\na\na\na\n', b'')])
+ self.assertEqual(
+ self.showdiff(b'a\n' * 5, b'a\n'),
+ [b'a\n', diffreplace(2, 10, b'a\na\na\na\n', b'')],
+ )
+
if __name__ == '__main__':
import silenttestrunner
+
silenttestrunner.main(__name__)