view tests/test-mdiff.py @ 39291:9f097214fbf3

index: embed nodetree in index object to avoid reference cycle Since the index has a reference to a nodetree and the nodetree has a reference back to the index, there is a reference cycle, so the index (and its nodetree) can never be freed. This patch fixes that by making "nodetree" a plan C struct that the index can embed, and also introduces a new "nodetreeObject" that is a Python type wrapping the nodetree struct. Thanks to Yuya for noticing this and for suggesting the solution. All tests passed on the first attempt once it compiled (I guess C is like Haskell in this regard?). Differential Revision: https://phab.mercurial-scm.org/D4372
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 24 Aug 2018 08:45:18 -0700
parents 8d0b0b533e09
children 2372284d9457
line wrap: on
line source

from __future__ import absolute_import
from __future__ import print_function

import unittest

from mercurial import (
    mdiff,
)

class splitnewlinesTests(unittest.TestCase):

    def test_splitnewlines(self):
        cases = {b'a\nb\nc\n': [b'a\n', b'b\n', b'c\n'],
                 b'a\nb\nc': [b'a\n', b'b\n', b'c'],
                 b'a\nb\nc\n\n': [b'a\n', b'b\n', b'c\n', b'\n'],
                 b'': [],
                 b'abcabc': [b'abcabc'],
                 }
        for inp, want in cases.items():
            self.assertEqual(mdiff.splitnewlines(inp), want)

if __name__ == '__main__':
    import silenttestrunner
    silenttestrunner.main(__name__)