equal
deleted
inserted
replaced
2 import collections |
2 import collections |
3 import struct |
3 import struct |
4 import unittest |
4 import unittest |
5 |
5 |
6 from mercurial import ( |
6 from mercurial import ( |
7 bdiff, |
7 mdiff, |
8 mpatch, |
8 mpatch, |
9 ) |
9 ) |
10 |
10 |
11 class diffreplace( |
11 class diffreplace( |
12 collections.namedtuple('diffreplace', 'start end from_ to')): |
12 collections.namedtuple('diffreplace', 'start end from_ to')): |
14 return 'diffreplace(%r, %r, %r, %r)' % self |
14 return 'diffreplace(%r, %r, %r, %r)' % self |
15 |
15 |
16 class BdiffTests(unittest.TestCase): |
16 class BdiffTests(unittest.TestCase): |
17 |
17 |
18 def assert_bdiff_applies(self, a, b): |
18 def assert_bdiff_applies(self, a, b): |
19 d = bdiff.bdiff(a, b) |
19 d = mdiff.textdiff(a, b) |
20 c = a |
20 c = a |
21 if d: |
21 if d: |
22 c = mpatch.patches(a, [d]) |
22 c = mpatch.patches(a, [d]) |
23 self.assertEqual( |
23 self.assertEqual( |
24 c, b, ("bad diff+patch result from\n %r to\n " |
24 c, b, ("bad diff+patch result from\n %r to\n " |
52 ] |
52 ] |
53 for a, b in cases: |
53 for a, b in cases: |
54 self.assert_bdiff(a, b) |
54 self.assert_bdiff(a, b) |
55 |
55 |
56 def showdiff(self, a, b): |
56 def showdiff(self, a, b): |
57 bin = bdiff.bdiff(a, b) |
57 bin = mdiff.textdiff(a, b) |
58 pos = 0 |
58 pos = 0 |
59 q = 0 |
59 q = 0 |
60 actions = [] |
60 actions = [] |
61 while pos < len(bin): |
61 while pos < len(bin): |
62 p1, p2, l = struct.unpack(">lll", bin[pos:pos + 12]) |
62 p1, p2, l = struct.unpack(">lll", bin[pos:pos + 12]) |
108 (" \ta\r b\t\n", " a b\n", 0), |
108 (" \ta\r b\t\n", " a b\n", 0), |
109 ("", "", 1), |
109 ("", "", 1), |
110 ("", "", 0), |
110 ("", "", 0), |
111 ] |
111 ] |
112 for a, b, allws in cases: |
112 for a, b, allws in cases: |
113 c = bdiff.fixws(a, allws) |
113 c = mdiff.fixws(a, allws) |
114 self.assertEqual( |
114 self.assertEqual( |
115 c, b, 'fixws(%r) want %r got %r (allws=%r)' % (a, b, c, allws)) |
115 c, b, 'fixws(%r) want %r got %r (allws=%r)' % (a, b, c, allws)) |
116 |
116 |
117 def test_nice_diff_for_trivial_change(self): |
117 def test_nice_diff_for_trivial_change(self): |
118 self.assertEqual(self.showdiff( |
118 self.assertEqual(self.showdiff( |