##// END OF EJS Templates
localrepo: use context manager for lock and transaction in commitctx()...
localrepo: use context manager for lock and transaction in commitctx() Differential Revision: https://phab.mercurial-scm.org/D5624

File last commit:

r39825:e961f18a default
r41400:0132221c default
Show More
test-bdiff.py
151 lines | 5.3 KiB | text/x-python | PythonLexer
Robert Stanca
py3: use print_function in test-bdiff.py
r28734 from __future__ import absolute_import, print_function
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
r30592 import collections
Martin Geisler
removed unused imports
r8656 import struct
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 import unittest
Robert Stanca
py3: use absolute_import in test-bdiff.py
r28733 from mercurial import (
Yuya Nishihara
bdiff: proxy through mdiff module...
r32201 mdiff,
Robert Stanca
py3: use absolute_import in test-bdiff.py
r28733 )
Martin Geisler
tests: renamed Python tests to .py
r8449
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
r30592 class diffreplace(
collections.namedtuple('diffreplace', 'start end from_ to')):
def __repr__(self):
return 'diffreplace(%r, %r, %r, %r)' % self
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 class BdiffTests(unittest.TestCase):
Martin Geisler
tests: renamed Python tests to .py
r8449
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 def assert_bdiff_applies(self, a, b):
Yuya Nishihara
bdiff: proxy through mdiff module...
r32201 d = mdiff.textdiff(a, b)
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 c = a
if d:
Yuya Nishihara
mpatch: proxy through mdiff module...
r32202 c = mdiff.patches(a, [d])
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 self.assertEqual(
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)
self.assert_bdiff_applies(b, a)
Martin Geisler
tests: renamed Python tests to .py
r8449
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 def test_bdiff_basic(self):
cases = [
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 (b"a\nc\n\n\n\n", b"a\nb\n\n\n"),
(b"a\nb\nc\n", b"a\nc\n"),
(b"", b""),
(b"a\nb\nc", b"a\nb\nc"),
(b"a\nb\nc\nd\n", b"a\nd\n"),
(b"a\nb\nc\nd\n", b"a\nc\ne\n"),
(b"a\nb\nc\n", b"a\nc\n"),
(b"a\n", b"c\na\nb\n"),
(b"a\n", b""),
(b"a\n", b"b\nc\n"),
(b"a\n", b"c\na\n"),
(b"", b"adjfkjdjksdhfksj"),
(b"", b"ab"),
(b"", b"abc"),
(b"a", b"a"),
(b"ab", b"ab"),
(b"abc", b"abc"),
(b"a\n", b"a\n"),
(b"a\nb", b"a\nb"),
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 ]
for a, b in cases:
self.assert_bdiff(a, b)
Martin Geisler
tests: renamed Python tests to .py
r8449
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
r30592 def showdiff(self, a, b):
Yuya Nishihara
bdiff: proxy through mdiff module...
r32201 bin = mdiff.textdiff(a, b)
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
r30592 pos = 0
q = 0
actions = []
while pos < len(bin):
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]))
pos += l
q = p2
if q < len(a):
actions.append(a[q:])
return actions
def test_issue1295(self):
cases = [
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 (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']),
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
r30592 ]
for old, new, want in cases:
self.assertEqual(self.showdiff(old, new), want)
Augie Fackler
tests: fix test-bdiff to handle variance between pure and c bdiff code...
r30595 def test_issue1295_varies_on_pure(self):
# we should pick up abbbc. rather than bc.de as the longest match
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 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']
Pulkit Goyal
tests: use assertTrue() instead of assert_() in test-bdiff.py...
r39825 self.assertTrue(got in (want_c, want_pure),
'got: %r, wanted either %r or %r' % (
got, want_c, want_pure))
Augie Fackler
tests: fix test-bdiff to handle variance between pure and c bdiff code...
r30595
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 3 of 4)
r30593 def test_fixws(self):
cases = [
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 (b" \ta\r b\t\n", b"ab\n", 1),
(b" \ta\r b\t\n", b" a b\n", 0),
(b"", b"", 1),
(b"", b"", 0),
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 3 of 4)
r30593 ]
for a, b, allws in cases:
Yuya Nishihara
bdiff: proxy through mdiff module...
r32201 c = mdiff.fixws(a, allws)
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 3 of 4)
r30593 self.assertEqual(
c, b, 'fixws(%r) want %r got %r (allws=%r)' % (a, b, c, allws))
Augie Fackler
tests: finish updating test-bdiff to unittest (part 4 of 4)
r30594 def test_nice_diff_for_trivial_change(self):
self.assertEqual(self.showdiff(
Pulkit Goyal
py3: use '%d' for integers instead of '%s'...
r39824 b''.join(b'<%d\n-\n' % i for i in range(5)),
b''.join(b'>%d\n-\n' % i for i in range(5))),
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 [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'])
Mads Kiilerich
tests: make test-bdiff.py easier to maintain...
r30427
Augie Fackler
tests: finish updating test-bdiff to unittest (part 4 of 4)
r30594 def test_prefer_appending(self):
# 1 line to 3 lines
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 self.assertEqual(self.showdiff(b'a\n', b'a\n' * 3),
[b'a\n', diffreplace(2, 2, b'', b'a\na\n')])
Augie Fackler
tests: finish updating test-bdiff to unittest (part 4 of 4)
r30594 # 1 line to 5 lines
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 self.assertEqual(self.showdiff(b'a\n', b'a\n' * 5),
[b'a\n', diffreplace(2, 2, b'', b'a\na\na\na\n')])
Mads Kiilerich
tests: explore some bdiff cases
r30428
Augie Fackler
tests: finish updating test-bdiff to unittest (part 4 of 4)
r30594 def test_prefer_removing_trailing(self):
# 3 lines to 1 line
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 self.assertEqual(self.showdiff(b'a\n' * 3, b'a\n'),
[b'a\n', diffreplace(2, 6, b'a\na\n', b'')])
Augie Fackler
tests: finish updating test-bdiff to unittest (part 4 of 4)
r30594 # 5 lines to 1 line
Pulkit Goyal
py3: add b'' prefixes in tests/test-bdiff.py...
r39823 self.assertEqual(self.showdiff(b'a\n' * 5, b'a\n'),
[b'a\n', diffreplace(2, 10, b'a\na\na\na\n', b'')])
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591
if __name__ == '__main__':
Pulkit Goyal
test-bdiff: move import inside the function to avoid test failure...
r30931 import silenttestrunner
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 silenttestrunner.main(__name__)