tests/test-bdiff.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 24 Aug 2021 21:08:09 +0200
changeset 47909 f89ac1ed2bc6
parent 43076 2372284d9457
child 48875 6000f5b25c9b
permissions -rw-r--r--
dirstate: drop the deprecated `normal` method The method was deprecated in 5.9. Differential Revision: https://phab.mercurial-scm.org/D11344
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28734
4e51f9d1683e py3: use print_function in test-bdiff.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28733
diff changeset
     1
from __future__ import absolute_import, print_function
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
     2
import collections
8656
284fda4cd093 removed unused imports
Martin Geisler <mg@lazybytes.net>
parents: 8449
diff changeset
     3
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
     4
import unittest
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
     5
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
     6
from mercurial import mdiff
400
8b067bde6679 Add a fast binary diff extension (not yet used)
mpm@selenic.com
parents:
diff changeset
     7
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
     8
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
     9
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
    10
    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
    11
        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
    12
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    13
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    14
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
    15
    def assert_bdiff_applies(self, a, b):
32202
ded48ad55146 bdiff: proxy through mdiff module
Yuya Nishihara <yuya@tcha.org>
parents: 30931
diff changeset
    16
        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
    17
        c = a
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    18
        if d:
32203
0c73634d0570 mpatch: proxy through mdiff module
Yuya Nishihara <yuya@tcha.org>
parents: 32202
diff changeset
    19
            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
    20
        self.assertEqual(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    21
            c,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    22
            b,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    23
            (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    24
                "bad diff+patch result from\n  %r to\n  "
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    25
                "%r: \nbdiff: %r\npatched: %r" % (a, b, d, c[:200])
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    26
            ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    27
        )
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    28
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    29
    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
    30
        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
    31
        self.assert_bdiff_applies(b, a)
400
8b067bde6679 Add a fast binary diff extension (not yet used)
mpm@selenic.com
parents:
diff changeset
    32
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    33
    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
    34
        cases = [
39787
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    35
            (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
    36
            (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
    37
            (b"", b""),
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", b"a\nb\nc"),
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\nd\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\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
    41
            (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
    42
            (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
    43
            (b"a\n", b""),
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"b\nc\n"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    45
            (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
    46
            (b"", b"adjfkjdjksdhfksj"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    47
            (b"", b"ab"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    48
            (b"", b"abc"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    49
            (b"a", b"a"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    50
            (b"ab", b"ab"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    51
            (b"abc", b"abc"),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
    52
            (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
    53
            (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
    54
        ]
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
    55
        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
    56
            self.assert_bdiff(a, b)
400
8b067bde6679 Add a fast binary diff extension (not yet used)
mpm@selenic.com
parents:
diff changeset
    57
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
    58
    def showdiff(self, a, b):
32202
ded48ad55146 bdiff: proxy through mdiff module
Yuya Nishihara <yuya@tcha.org>
parents: 30931
diff changeset
    59
        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
    60
        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
    61
        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
    62
        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
    63
        while pos < len(bin):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    64
            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
    65
            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
    66
            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
    67
                actions.append(a[q:p1])
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    68
            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
    69
            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
    70
            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
    71
        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
    72
            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
    73
        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
    74
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
    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
    76
        cases = [
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    77
            (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    78
                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
    79
                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
    80
                [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    81
                    b'x\n\nx\n\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    82
                    diffreplace(6, 6, b'', b'y\n\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    83
                    b'x\n\nx\n\nz\n',
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
            (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    87
                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
    88
                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
    89
                [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    90
                    b'x\n\nx\n\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    91
                    diffreplace(6, 6, b'', b'y\n\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    92
                    b'x\n\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    93
                    diffreplace(9, 9, b'', b'y\n\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    94
                    b'x\n\nz\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    95
                ],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
    96
            ),
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
    97
        ]
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
        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
    99
            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
   100
30595
99bd5479d58b tests: fix test-bdiff to handle variance between pure and c bdiff code
Augie Fackler <augie@google.com>
parents: 30594
diff changeset
   101
    def test_issue1295_varies_on_pure(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   102
        # 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
   103
        got = self.showdiff(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   104
            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
   105
            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
   106
        )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   107
        want_c = [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   108
            b'a\nb\nb\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   109
            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
   110
            b'b\nc\n.\nd\ne\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   111
            diffreplace(16, 18, b'.\n', b''),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   112
            b'f\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   113
        ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   114
        want_pure = [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   115
            diffreplace(0, 0, b'', b'a\nb\nb\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   116
            b'a\nb\nb\nb\nc\n.\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   117
            diffreplace(12, 12, b'', b'b\nc\n.\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   118
            b'd\ne\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   119
            diffreplace(16, 18, b'.\n', b''),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   120
            b'f\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   121
        ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   122
        self.assertTrue(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   123
            got in (want_c, want_pure),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   124
            '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
   125
        )
30595
99bd5479d58b tests: fix test-bdiff to handle variance between pure and c bdiff code
Augie Fackler <augie@google.com>
parents: 30594
diff changeset
   126
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
   127
    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
   128
        cases = [
39787
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"ab\n", 1),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
   130
            (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
   131
            (b"", b"", 1),
e05d7c71f209 py3: add b'' prefixes in tests/test-bdiff.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 32203
diff changeset
   132
            (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
   133
        ]
4286015285ec tests: update more of test-bdiff.py to use unittest (part 3 of 4)
Augie Fackler <augie@google.com>
parents: 30592
diff changeset
   134
        for a, b, allws in cases:
32202
ded48ad55146 bdiff: proxy through mdiff module
Yuya Nishihara <yuya@tcha.org>
parents: 30931
diff changeset
   135
            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
   136
            self.assertEqual(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   137
                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
   138
            )
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
   139
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   140
    def test_nice_diff_for_trivial_change(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   141
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   142
            self.showdiff(
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
                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
   145
            ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   146
            [
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   147
                diffreplace(0, 3, b'<0\n', b'>0\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   148
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   149
                diffreplace(5, 8, b'<1\n', b'>1\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   150
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   151
                diffreplace(10, 13, b'<2\n', b'>2\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   152
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   153
                diffreplace(15, 18, b'<3\n', b'>3\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   154
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   155
                diffreplace(20, 23, b'<4\n', b'>4\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   156
                b'-\n',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   157
            ],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   158
        )
30427
ede7bc45bf0a tests: make test-bdiff.py easier to maintain
Mads Kiilerich <madski@unity3d.com>
parents: 29013
diff changeset
   159
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   160
    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
   161
        # 1 line to 3 lines
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   162
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   163
            self.showdiff(b'a\n', b'a\n' * 3),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   164
            [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
   165
        )
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   166
        # 1 line to 5 lines
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   167
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   168
            self.showdiff(b'a\n', b'a\n' * 5),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   169
            [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
   170
        )
30428
3743e5dbb824 tests: explore some bdiff cases
Mads Kiilerich <madski@unity3d.com>
parents: 30427
diff changeset
   171
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   172
    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
   173
        # 3 lines to 1 line
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   174
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   175
            self.showdiff(b'a\n' * 3, b'a\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   176
            [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
   177
        )
30594
ea648e8f8a34 tests: finish updating test-bdiff to unittest (part 4 of 4)
Augie Fackler <augie@google.com>
parents: 30593
diff changeset
   178
        # 5 lines to 1 line
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   179
        self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   180
            self.showdiff(b'a\n' * 5, b'a\n'),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   181
            [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
   182
        )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   183
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
   184
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
   185
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
   186
    import silenttestrunner
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 39789
diff changeset
   187
30591
1b393a93a7df tests: migrate test-bdiff.py to use unittest (part 1 of 4)
Augie Fackler <augie@google.com>
parents: 30433
diff changeset
   188
    silenttestrunner.main(__name__)