tests/test-mdiff.py
author Simon Sapin <simon.sapin@octobus.net>
Fri, 10 Dec 2021 16:18:58 +0100
changeset 48454 473af5cbc209
parent 43076 2372284d9457
child 48875 6000f5b25c9b
permissions -rw-r--r--
rhg: Add support for `rhg status --copies` Copy sources are collected during `status()` rather than after the fact like in Python, because `status()` takes a `&mut` exclusive reference to the dirstate map (in order to potentially mutate it for directory mtimes) and returns `Cow<'_, HgPath>` that borrow the dirstate map. Even though with `Cow` only some shared borrows remain, the still extend the same lifetime of the initial `&mut` so the dirstate map cannot be borrowed again to access copy sources after the fact: https://doc.rust-lang.org/nomicon/lifetime-mismatch.html#limits-of-lifetimes Additionally, collecting copy sources during the dirstate tree traversal that `status()` already does avoids the cost of another traversal or other lookups (though I haven’t benchmarked that cost). Differential Revision: https://phab.mercurial-scm.org/D11899
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35862
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
     1
from __future__ import absolute_import
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
     2
from __future__ import print_function
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
     3
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
     4
import unittest
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
     5
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
     6
from mercurial import mdiff
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
     7
35862
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
     8
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
     9
class splitnewlinesTests(unittest.TestCase):
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
    10
    def test_splitnewlines(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    11
        cases = {
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    12
            b'a\nb\nc\n': [b'a\n', b'b\n', b'c\n'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    13
            b'a\nb\nc': [b'a\n', b'b\n', b'c'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    14
            b'a\nb\nc\n\n': [b'a\n', b'b\n', b'c\n', b'\n'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    15
            b'': [],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    16
            b'abcabc': [b'abcabc'],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    17
        }
36327
58c1368ab629 py3: use dict.items() instead of dict.iteritems() in tests
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35862
diff changeset
    18
        for inp, want in cases.items():
35862
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
    19
            self.assertEqual(mdiff.splitnewlines(inp), want)
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
    20
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    21
35862
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
    22
if __name__ == '__main__':
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
    23
    import silenttestrunner
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36328
diff changeset
    24
35862
1ab7b16c9437 tests: start a set of unit tests for mdiff.py, starting with splitnewlines
Augie Fackler <augie@google.com>
parents:
diff changeset
    25
    silenttestrunner.main(__name__)