##// END OF EJS Templates
tests: conditionalize path output for in-memory pyoxidizer resources
tests: conditionalize path output for in-memory pyoxidizer resources

File last commit:

r49730:6000f5b2 default
r50730:4836705a stable
Show More
test-bdiff.py
187 lines | 5.5 KiB | text/x-python | PythonLexer
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
Augie Fackler
formatting: blacken the codebase...
r43346 from mercurial import mdiff
Martin Geisler
tests: renamed Python tests to .py
r8449
Augie Fackler
formatting: blacken the codebase...
r43346
class diffreplace(collections.namedtuple('diffreplace', 'start end from_ to')):
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
r30592 def __repr__(self):
return 'diffreplace(%r, %r, %r, %r)' % self
Augie Fackler
formatting: blacken the codebase...
r43346
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 class BdiffTests(unittest.TestCase):
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(
Augie Fackler
formatting: blacken the codebase...
r43346 c,
b,
(
"bad diff+patch result from\n %r to\n "
"%r: \nbdiff: %r\npatched: %r" % (a, b, d, c[:200])
),
)
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591
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):
Augie Fackler
formatting: blacken the codebase...
r43346 p1, p2, l = struct.unpack(">lll", bin[pos : pos + 12])
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
r30592 pos += 12
if p1:
actions.append(a[q:p1])
Augie Fackler
formatting: blacken the codebase...
r43346 actions.append(diffreplace(p1, p2, a[p1:p2], bin[pos : pos + l]))
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 2 of 4)
r30592 pos += l
q = p2
if q < len(a):
actions.append(a[q:])
return actions
def test_issue1295(self):
cases = [
Augie Fackler
formatting: blacken the codebase...
r43346 (
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):
Augie Fackler
formatting: blacken the codebase...
r43346 # 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),
)
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(
Augie Fackler
formatting: blacken the codebase...
r43346 c, b, 'fixws(%r) want %r got %r (allws=%r)' % (a, b, c, allws)
)
Augie Fackler
tests: update more of test-bdiff.py to use unittest (part 3 of 4)
r30593
Augie Fackler
tests: finish updating test-bdiff to unittest (part 4 of 4)
r30594 def test_nice_diff_for_trivial_change(self):
Augie Fackler
formatting: blacken the codebase...
r43346 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',
],
)
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
Augie Fackler
formatting: blacken the codebase...
r43346 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
Augie Fackler
formatting: blacken the codebase...
r43346 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
Augie Fackler
formatting: blacken the codebase...
r43346 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
Augie Fackler
formatting: blacken the codebase...
r43346 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
formatting: blacken the codebase...
r43346
Augie Fackler
tests: migrate test-bdiff.py to use unittest (part 1 of 4)...
r30591 silenttestrunner.main(__name__)