tests/test-bdiff.py
author Manuel Jacob <me@manueljacob.de>
Thu, 15 Sep 2022 01:48:38 +0200
changeset 49494 c96ed4029fda
parent 48875 6000f5b25c9b
permissions -rw-r--r--
templates: add filter to reverse list The filter supports only lists because for lists, it’s straightforward to implement. Reversing text doesn’t seem very useful and is hard to implement. Reversing the bytes would break multi-bytes encodings. Reversing the code points would break characters consisting of multiple code points. Reversing graphemes is non-trivial without using a library not included in the standard library.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30592
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
     1
import collections
8656
284fda4cd093 removed unused imports
Martin Geisler <mg@lazybytes.net>
parents: 8449
diff changeset
     2
import struct
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
     3
import unittest
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
     4
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
     5
from mercurial import mdiff
400
8b067bde6679 Add a fast binary diff extension (not yet used)
mpm@selenic.com
parents:
diff changeset
     6
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
     7
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
     8
class diffreplace(collections.namedtuple('diffreplace', 'start end from_ to')):
30592
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
     9
    def __repr__(self):
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    10
        return 'diffreplace(%r, %r, %r, %r)' % self
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    11
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    12
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    13
class BdiffTests(unittest.TestCase):
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    14
    def assert_bdiff_applies(self, a, b):
32202
ded48ad55146 bdiff: proxy through mdiff module
Yuya Nishihara <yuya@tcha.org>
parents: 30931
diff changeset
    15
        d = mdiff.textdiff(a, b)
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    16
        c = a
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    17
        if d:
32203
0c73634d0570 mpatch: proxy through mdiff module
Yuya Nishihara <yuya@tcha.org>
parents: 32202
diff changeset
    18
            c = mdiff.patches(a, [d])
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    19
        self.assertEqual(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    20
            c,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    21
            b,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    22
            (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    23
                "bad diff+patch result from\n  %r to\n  "
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    24
                "%r: \nbdiff: %r\npatched: %r" % (a, b, d, c[:200])
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    25
            ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    26
        )
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    27
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    28
    def assert_bdiff(self, a, b):
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    29
        self.assert_bdiff_applies(a, b)
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    30
        self.assert_bdiff_applies(b, a)
400
8b067bde6679 Add a fast binary diff extension (not yet used)
mpm@selenic.com
parents:
diff changeset
    31
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    32
    def test_bdiff_basic(self):
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    33
        cases = [
39787
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    34
            (b"a\nc\n\n\n\n", b"a\nb\n\n\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    35
            (b"a\nb\nc\n", b"a\nc\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    36
            (b"", b""),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    37
            (b"a\nb\nc", b"a\nb\nc"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    38
            (b"a\nb\nc\nd\n", b"a\nd\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    39
            (b"a\nb\nc\nd\n", b"a\nc\ne\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    40
            (b"a\nb\nc\n", b"a\nc\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    41
            (b"a\n", b"c\na\nb\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    42
            (b"a\n", b""),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    43
            (b"a\n", b"b\nc\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    44
            (b"a\n", b"c\na\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    45
            (b"", b"adjfkjdjksdhfksj"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    46
            (b"", b"ab"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    47
            (b"", b"abc"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    48
            (b"a", b"a"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    49
            (b"ab", b"ab"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    50
            (b"abc", b"abc"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    51
            (b"a\n", b"a\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    52
            (b"a\nb", b"a\nb"),
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    53
        ]
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    54
        for a, b in cases:
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    55
            self.assert_bdiff(a, b)
400
8b067bde6679 Add a fast binary diff extension (not yet used)
mpm@selenic.com
parents:
diff changeset
    56
30592
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    57
    def showdiff(self, a, b):
32202
ded48ad55146 bdiff: proxy through mdiff module
Yuya Nishihara <yuya@tcha.org>
parents: 30931
diff changeset
    58
        bin = mdiff.textdiff(a, b)
30592
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    59
        pos = 0
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    60
        q = 0
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    61
        actions = []
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    62
        while pos < len(bin):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    63
            p1, p2, l = struct.unpack(">lll", bin[pos : pos + 12])
30592
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    64
            pos += 12
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    65
            if p1:
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    66
                actions.append(a[q:p1])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    67
            actions.append(diffreplace(p1, p2, a[p1:p2], bin[pos : pos + l]))
30592
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    68
            pos += l
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    69
            q = p2
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    70
        if q < len(a):
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    71
            actions.append(a[q:])
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    72
        return actions
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    73
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    74
    def test_issue1295(self):
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    75
        cases = [
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    76
            (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    77
                b"x\n\nx\n\nx\n\nx\n\nz\n",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    78
                b"x\n\nx\n\ny\n\nx\n\nx\n\nz\n",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    79
                [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    80
                    b'x\n\nx\n\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    81
                    diffreplace(6, 6, b'', b'y\n\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    82
                    b'x\n\nx\n\nz\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    83
                ],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    84
            ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    85
            (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    86
                b"x\n\nx\n\nx\n\nx\n\nz\n",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    87
                b"x\n\nx\n\ny\n\nx\n\ny\n\nx\n\nz\n",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    88
                [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    89
                    b'x\n\nx\n\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    90
                    diffreplace(6, 6, b'', b'y\n\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    91
                    b'x\n\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    92
                    diffreplace(9, 9, b'', b'y\n\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    93
                    b'x\n\nz\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    94
                ],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    95
            ),
30592
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    96
        ]
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    97
        for old, new, want in cases:
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    98
            self.assertEqual(self.showdiff(old, new), want)
0d8cada9998d tests: update more of test-bdiff.py to use unittest (part 2 of 4)
Augie Fackler <augie@google.com>
parents: 30591
diff changeset
    99
30595
99bd5479d58b tests: fix test-bdiff to handle variance between pure and c bdiff code
Augie Fackler <augie@google.com>
parents: 30594
diff changeset
   100
    def test_issue1295_varies_on_pure(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   101
        # we should pick up abbbc. rather than bc.de as the longest match
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   102
        got = self.showdiff(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   103
            b"a\nb\nb\nb\nc\n.\nd\ne\n.\nf\n",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   104
            b"a\nb\nb\na\nb\nb\nb\nc\n.\nb\nc\n.\nd\ne\nf\n",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   105
        )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   106
        want_c = [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   107
            b'a\nb\nb\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   108
            diffreplace(6, 6, b'', b'a\nb\nb\nb\nc\n.\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   109
            b'b\nc\n.\nd\ne\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   110
            diffreplace(16, 18, b'.\n', b''),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   111
            b'f\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   112
        ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   113
        want_pure = [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   114
            diffreplace(0, 0, b'', b'a\nb\nb\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   115
            b'a\nb\nb\nb\nc\n.\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   116
            diffreplace(12, 12, b'', b'b\nc\n.\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   117
            b'd\ne\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   118
            diffreplace(16, 18, b'.\n', b''),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   119
            b'f\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   120
        ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   121
        self.assertTrue(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   122
            got in (want_c, want_pure),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   123
            'got: %r, wanted either %r or %r' % (got, want_c, want_pure),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   124
        )
30595
99bd5479d58b tests: fix test-bdiff to handle variance between pure and c bdiff code
Augie Fackler <augie@google.com>
parents: 30594
diff changeset
   125
30593
4286015285ec tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Augie Fackler <augie@google.com>
parents: 30592
diff changeset
   126
    def test_fixws(self):
4286015285ec tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Augie Fackler <augie@google.com>
parents: 30592
diff changeset
   127
        cases = [
39787
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
   128
            (b" \ta\r b\t\n", b"ab\n", 1),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
   129
            (b" \ta\r b\t\n", b" a b\n", 0),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
   130
            (b"", b"", 1),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
   131
            (b"", b"", 0),
30593
4286015285ec tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Augie Fackler <augie@google.com>
parents: 30592
diff changeset
   132
        ]
4286015285ec tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Augie Fackler <augie@google.com>
parents: 30592
diff changeset
   133
        for a, b, allws in cases:
32202
ded48ad55146 bdiff: proxy through mdiff module
Yuya Nishihara <yuya@tcha.org>
parents: 30931
diff changeset
   134
            c = mdiff.fixws(a, allws)
30593
4286015285ec tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Augie Fackler <augie@google.com>
parents: 30592
diff changeset
   135
            self.assertEqual(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   136
                c, b, 'fixws(%r) want %r got %r (allws=%r)' % (a, b, c, allws)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   137
            )
30593
4286015285ec tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Augie Fackler <augie@google.com>
parents: 30592
diff changeset
   138
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   139
    def test_nice_diff_for_trivial_change(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   140
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   141
            self.showdiff(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   142
                b''.join(b'<%d\n-\n' % i for i in range(5)),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   143
                b''.join(b'>%d\n-\n' % i for i in range(5)),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   144
            ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   145
            [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   146
                diffreplace(0, 3, b'<0\n', b'>0\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   147
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   148
                diffreplace(5, 8, b'<1\n', b'>1\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   149
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   150
                diffreplace(10, 13, b'<2\n', b'>2\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   151
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   152
                diffreplace(15, 18, b'<3\n', b'>3\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   153
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   154
                diffreplace(20, 23, b'<4\n', b'>4\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   155
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   156
            ],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   157
        )
30427
ede7bc45bf0a tests: make test-bdiff.py easier to maintain
Mads Kiilerich <madski@unity3d.com>
parents: 29013
diff changeset
   158
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   159
    def test_prefer_appending(self):
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   160
        # 1 line to 3 lines
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   161
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   162
            self.showdiff(b'a\n', b'a\n' * 3),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   163
            [b'a\n', diffreplace(2, 2, b'', b'a\na\n')],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   164
        )
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   165
        # 1 line to 5 lines
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   166
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   167
            self.showdiff(b'a\n', b'a\n' * 5),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   168
            [b'a\n', diffreplace(2, 2, b'', b'a\na\na\na\n')],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   169
        )
30428
3743e5dbb824 tests: explore some bdiff cases
Mads Kiilerich <madski@unity3d.com>
parents: 30427
diff changeset
   170
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   171
    def test_prefer_removing_trailing(self):
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   172
        # 3 lines to 1 line
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   173
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   174
            self.showdiff(b'a\n' * 3, b'a\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   175
            [b'a\n', diffreplace(2, 6, b'a\na\n', b'')],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   176
        )
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   177
        # 5 lines to 1 line
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   178
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   179
            self.showdiff(b'a\n' * 5, b'a\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   180
            [b'a\n', diffreplace(2, 10, b'a\na\na\na\n', b'')],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   181
        )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   182
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
   183
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
   184
if __name__ == '__main__':
30931
f2ad0d804700 test-bdiff: move import inside the function to avoid test failure
Pulkit Goyal <7895pulkit@gmail.com>
parents: 30595
diff changeset
   185
    import silenttestrunner
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   186
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
   187
    silenttestrunner.main(__name__)