tests/test-mdiff.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Tue, 15 Sep 2020 10:55:17 +0200
changeset 45634 9a6b409b8ebc
parent 43076 2372284d9457
child 48875 6000f5b25c9b
permissions -rw-r--r--
changing-files: rework the way we store changed files in side-data We need to store new data so this is a good opportunity to rework this fully. 1) We directly store the list of affected file in the side data: * This avoid having to fetch and parse the `files` list in the revision in addition to the sidedata. Making the data more self sufficient. * This work around situation where that `files` field contains wrong information, and open the way to other bug fixing (eg: issue6219) * The format (fixed initial index, sorted files) allow for fast lookup of filename within the structure. * This unify the storage of affected files and copies sources and destination, limiting the number filename stored redundantly. * This prepare for the fact we should drop the `files` as soon as we do any change affecting the revision schema. * This rely on compression to avoid a significant increase of the changelog.d. More testing on this will be done before we freeze the final format. 2) We can store additional data: * The new "merged" field, * A future "salvaged" set recording files that might have been deleted but have were still present in the final result. Differential Revision: https://phab.mercurial-scm.org/D9090
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__)