예제 #1
0
    def test_diff_at_start(self):
        fixture_path = helper.fixture('diff-start.txt')
        parser = DiffParser('foo bar/a', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0], '@@ -1 +1,4 @@')
        self.assertEqual(hunks[-1].lines[-1], '+c')
        self.assertEqual(hunks[0].old_start, 1)
        self.assertEqual(hunks[0].old_count, 1)
        self.assertEqual(hunks[0].new_start, 1)
        self.assertEqual(hunks[0].new_count, 4)
        self.assertEqual(parser.generate_patch(1, 3),
                         '--- a/foo bar/a\n'
                         '+++ b/foo bar/a\n'
                         '@@ -1 +1,3 @@\n'
                         ' bar\n'
                         '+a\n'
                         '+b\n')
        self.assertEqual(parser.generate_patch(0, 4),
                         '--- a/foo bar/a\n'
                         '+++ b/foo bar/a\n'
                         '@@ -1 +1,4 @@\n'
                         ' bar\n'
                         '+a\n'
                         '+b\n'
                         '+c\n')
예제 #2
0
 def test_core_encode(self):
     """Test the core.encode function
     """
     filename = helper.fixture('unicode.txt')
     expect = core.encode('unicøde')
     actual = core.encode(core.read(filename).strip())
     self.assertEqual(expect, actual)
예제 #3
0
 def test_core_encode(self):
     """Test the core.encode function
     """
     filename = helper.fixture('unicode.txt')
     expect = core.encode('unicøde')
     actual = core.encode(core.read(filename).strip())
     self.assertEqual(expect, actual)
예제 #4
0
    def test_diff_at_start(self):
        fixture_path = helper.fixture('diff-start.txt')
        parser = diffparse.DiffParser('foo bar/a', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0], '@@ -1 +1,4 @@\n')
        self.assertEqual(hunks[-1].lines[-1], '+c\n')
        self.assertEqual(hunks[0].old_start, 1)
        self.assertEqual(hunks[0].old_count, 1)
        self.assertEqual(hunks[0].new_start, 1)
        self.assertEqual(hunks[0].new_count, 4)
        self.assertEqual(
            parser.generate_patch(1, 3), '--- a/foo bar/a\n'
            '+++ b/foo bar/a\n'
            '@@ -1 +1,3 @@\n'
            ' bar\n'
            '+a\n'
            '+b\n')
        self.assertEqual(
            parser.generate_patch(0, 4), '--- a/foo bar/a\n'
            '+++ b/foo bar/a\n'
            '@@ -1 +1,4 @@\n'
            ' bar\n'
            '+a\n'
            '+b\n'
            '+c\n')
예제 #5
0
    def test_diff_that_empties_file(self):
        fixture_path = helper.fixture('diff-empty.txt')
        parser = DiffParser('filename', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0],
                '@@ -1,2 +0,0 @@')
        self.assertEqual(hunks[-1].lines[-1],
                '-second')
        self.assertEqual(hunks[0].old_start, 1)
        self.assertEqual(hunks[0].old_count, 2)
        self.assertEqual(hunks[0].new_start, 0)
        self.assertEqual(hunks[0].new_count, 0)
        self.assertEqual(parser.generate_patch(1, 1),
                         '--- a/filename\n'
                         '+++ b/filename\n'
                         '@@ -1,2 +1 @@\n'
                         '-first\n'
                         ' second\n')
        self.assertEqual(parser.generate_patch(0, 2),
                         '--- a/filename\n'
                         '+++ b/filename\n'
                         '@@ -1,2 +0,0 @@\n'
                         '-first\n'
                         '-second\n')
예제 #6
0
    def test_diff_that_empties_file(self):
        fixture_path = helper.fixture('diff-empty.txt')
        parser = DiffParser('filename', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0],
                '@@ -1,2 +0,0 @@')
        self.assertEqual(hunks[-1].lines[-1],
                '-second')
        self.assertEqual(hunks[0].old_start, 1)
        self.assertEqual(hunks[0].old_count, 2)
        self.assertEqual(hunks[0].new_start, 0)
        self.assertEqual(hunks[0].new_count, 0)
        self.assertEqual(parser.generate_patch(1, 1),
                         '--- a/filename\n'
                         '+++ b/filename\n'
                         '@@ -1,2 +1 @@\n'
                         '-first\n'
                         ' second\n')
        self.assertEqual(parser.generate_patch(0, 2),
                         '--- a/filename\n'
                         '+++ b/filename\n'
                         '@@ -1,2 +0,0 @@\n'
                         '-first\n'
                         '-second\n')
예제 #7
0
    def test_diff_at_end(self):
        fwd = helper.fixture('diff-end.txt')
        reverse = helper.fixture('diff-end-reverse.txt')

        source = DiffSource(fwd, reverse)
        model = DiffParseModel()
        parser = DiffParser(model,
                            filename='',
                            cached=False,
                            reverse=False,
                            diff_source=source)

        self.assertEqual(parser.diffs()[0][0], '@@ -1,39 +1 @@')
        self.assertEqual(parser.offsets(), [1114])
        self.assertEqual(parser.spans(), [[0, 1114]])
        self.assertEqual(parser.ranges()[0].begin, [1, 39])
        self.assertEqual(parser.ranges()[0].end, [1, 1])
        self.assertEqual(parser.ranges()[0].make(), '@@ -1,39 +1 @@')
예제 #8
0
    def test_diff(self):
        fixture_path = helper.fixture('diff.txt')
        parser = diffparse.DiffParser('cola/diffparse.py',
                                      core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(len(hunks), 3)
        self.assertEqual(hunks[0].first_line_idx, 0)
        self.assertEqual(len(hunks[0].lines), 23)
        self.assertEqual(
                hunks[0].lines[0],
                '@@ -6,10 +6,21 @@ from cola import gitcmds\n')
        self.assertEqual(
                hunks[0].lines[1],
                ' from cola import gitcfg\n')
        self.assertEqual(hunks[0].lines[2], ' \n')
        self.assertEqual(hunks[0].lines[3], ' \n')
        self.assertEqual(hunks[0].lines[4], '+class DiffSource(object):\n')
        self.assertEqual(
                hunks[0].lines[-1],
                r"         self._header_start_re = re.compile('^@@ -(\d+)"
                r" \+(\d+),(\d+) @@.*')"
                '\n')

        self.assertEqual(hunks[1].first_line_idx, 23)
        self.assertEqual(len(hunks[1].lines), 18)
        self.assertEqual(
                hunks[1].lines[0],
                '@@ -29,13 +40,11 @@ class DiffParser(object):\n')
        self.assertEqual(
                hunks[1].lines[1],
                '         self.diff_sel = []\n')
        self.assertEqual(
                hunks[1].lines[2],
                '         self.selected = []\n')
        self.assertEqual(
                hunks[1].lines[3],
                '         self.filename = filename\n')
        self.assertEqual(
                hunks[1].lines[4],
                '+        self.diff_source = diff_source or DiffSource()\n')
        self.assertEqual(
                hunks[1].lines[-1],
                '         self.header = header\n')

        self.assertEqual(hunks[2].first_line_idx, 41)
        self.assertEqual(len(hunks[2].lines), 16)
        self.assertEqual(
                hunks[2].lines[0],
                '@@ -43,11 +52,10 @@ class DiffParser(object):\n')
        self.assertEqual(
                hunks[2].lines[-1],
                '         """Writes a new diff corresponding to the user\'s'
                ' selection."""\n')
예제 #9
0
    def test_diff_at_start(self):
        fwd = helper.fixture('diff-start.txt')
        reverse = helper.fixture('diff-start-reverse.txt')

        source = DiffSource(fwd, reverse)
        model = DiffParseModel()
        parser = DiffParser(model,
                            filename='',
                            cached=False,
                            reverse=False,
                            diff_source=source)

        self.assertEqual(parser.diffs()[0][0], '@@ -1 +1,4 @@')
        self.assertEqual(parser.offsets(), [30])
        self.assertEqual(parser.spans(), [[0, 30]])
        self.assertEqual(parser.diffs_for_range(0, 10),
                         (['@@ -1 +1,4 @@\n bar\n+a\n+b\n+c\n\n'], [0]))
        self.assertEqual(parser.ranges()[0].begin, [1, 1])
        self.assertEqual(parser.ranges()[0].end, [1, 4])
        self.assertEqual(parser.ranges()[0].make(), '@@ -1 +1,4 @@')
예제 #10
0
    def test_diff_that_empties_file(self):
        fwd = helper.fixture('diff-empty.txt')
        reverse = helper.fixture('diff-empty-reverse.txt')

        source = DiffSource(fwd, reverse)
        model = DiffParseModel()
        parser = DiffParser(model,
                            filename='',
                            cached=False,
                            reverse=False,
                            diff_source=source)

        self.assertEqual(parser.diffs()[0][0], '@@ -1,2 +0,0 @@')
        self.assertEqual(parser.offsets(), [33])
        self.assertEqual(parser.spans(), [[0, 33]])
        self.assertEqual(parser.diffs_for_range(0, 1),
                         (['@@ -1,2 +0,0 @@\n-first\n-second\n\n'], [0]))

        self.assertEqual(parser.ranges()[0].begin, [1, 2])
        self.assertEqual(parser.ranges()[0].end, [0, 0])
        self.assertEqual(parser.ranges()[0].make(), '@@ -1,2 +0,0 @@')
예제 #11
0
    def test_diff(self):
        fixture_path = helper.fixture('diff.txt')
        parser = diffparse.DiffParser('cola/diffparse.py',
                                      core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(len(hunks), 3)
        self.assertEqual(hunks[0].first_line_idx, 0)
        self.assertEqual(len(hunks[0].lines), 23)
        self.assertEqual(
                hunks[0].lines[0],
                '@@ -6,10 +6,21 @@ from cola import gitcmds')
        self.assertEqual(
                hunks[0].lines[1],
                ' from cola import gitcfg')
        self.assertEqual(hunks[0].lines[2], ' ')
        self.assertEqual(hunks[0].lines[3], ' ')
        self.assertEqual(hunks[0].lines[4], '+class DiffSource(object):')
        self.assertEqual(
                hunks[0].lines[-1],
                "         self._header_start_re = re.compile('^@@ -(\d+)"
                " \+(\d+),(\d+) @@.*')")

        self.assertEqual(hunks[1].first_line_idx, 23)
        self.assertEqual(len(hunks[1].lines), 18)
        self.assertEqual(
                hunks[1].lines[0],
                '@@ -29,13 +40,11 @@ class DiffParser(object):')
        self.assertEqual(
                hunks[1].lines[1],
                '         self.diff_sel = []')
        self.assertEqual(
                hunks[1].lines[2],
                '         self.selected = []')
        self.assertEqual(
                hunks[1].lines[3],
                '         self.filename = filename')
        self.assertEqual(
                hunks[1].lines[4],
                '+        self.diff_source = diff_source or DiffSource()')
        self.assertEqual(
                hunks[1].lines[-1],
                '         self.header = header')

        self.assertEqual(hunks[2].first_line_idx, 41)
        self.assertEqual(len(hunks[2].lines), 16)
        self.assertEqual(
                hunks[2].lines[0],
                '@@ -43,11 +52,10 @@ class DiffParser(object):')
        self.assertEqual(
                hunks[2].lines[-1],
                '         """Writes a new diff corresponding to the user\'s'
                ' selection."""')
예제 #12
0
    def test_diff_at_end(self):
        fixture_path = helper.fixture('diff-end.txt')
        parser = diffparse.DiffParser('rijndael.js', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0], '@@ -1,39 +1 @@\n')
        self.assertEqual(
            hunks[-1].lines[-1],
            "+module.exports = require('./build/Release/rijndael');\n")
        self.assertEqual(hunks[0].old_start, 1)
        self.assertEqual(hunks[0].old_count, 39)
        self.assertEqual(hunks[0].new_start, 1)
        self.assertEqual(hunks[0].new_count, 1)
예제 #13
0
    def test_diff_at_end(self):
        fixture_path = helper.fixture('diff-end.txt')
        parser = DiffParser('rijndael.js', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0], '@@ -1,39 +1 @@')
        self.assertEqual(
                hunks[-1].lines[-1],
                "+module.exports = require('./build/Release/rijndael');")
        self.assertEqual(hunks[0].old_start, 1)
        self.assertEqual(hunks[0].old_count, 39)
        self.assertEqual(hunks[0].new_start, 1)
        self.assertEqual(hunks[0].new_count, 1)
예제 #14
0
    def test_diff(self):
        fwd = helper.fixture('diff.txt')
        reverse = helper.fixture('diff-reverse.txt')
        source = DiffSource(fwd, reverse)
        model = DiffParseModel()
        parser = DiffParser(model,
                            filename='',
                            cached=False,
                            reverse=False,
                            diff_source=source)

        self.assertEqual(parser.offsets(), [916, 1798, 2550])
        self.assertEqual(parser.spans(), [[0, 916], [916, 1798], [1798, 2550]])

        diffs = parser.diffs()
        self.assertEqual(len(diffs), 3)

        self.assertEqual(len(diffs[0]), 23)
        self.assertEqual(diffs[0][0],
                         '@@ -6,10 +6,21 @@ from cola import gitcmds')
        self.assertEqual(diffs[0][1], ' from cola import gitcfg')
        self.assertEqual(diffs[0][2], ' ')
        self.assertEqual(diffs[0][3], ' ')
        self.assertEqual(diffs[0][4], '+class DiffSource(object):')

        self.assertEqual(len(diffs[1]), 18)
        self.assertEqual(diffs[1][0],
                         '@@ -29,13 +40,11 @@ class DiffParser(object):')
        self.assertEqual(diffs[1][1], '         self.diff_sel = []')
        self.assertEqual(diffs[1][2], '         self.selected = []')
        self.assertEqual(diffs[1][3], '         self.filename = filename')
        self.assertEqual(
            diffs[1][4],
            '+        self.diff_source = diff_source or DiffSource()')

        self.assertEqual(len(diffs[2]), 18)
        self.assertEqual(diffs[2][0],
                         '@@ -43,11 +52,10 @@ class DiffParser(object):')
예제 #15
0
 def setUp(self):
     self.parser = diffparse.DiffLines()
     fixture_path = helper.fixture('diff.txt')
     self.text = core.read(fixture_path)
예제 #16
0
 def test_decode_non_utf8_string(self):
     filename = helper.fixture('cyrillic-cp1251.txt')
     with open(filename, 'rb') as f:
         content = f.read()
     actual = core.decode(content)
     self.assertEqual(actual.encoding, 'iso-8859-15')
예제 #17
0
 def test_decode_non_utf8(self):
     filename = helper.fixture('cyrillic-cp1251.txt')
     actual = core.read(filename)
     self.assertEqual(actual.encoding, 'iso-8859-15')
예제 #18
0
 def test_decode_utf8(self):
     filename = helper.fixture('cyrillic-utf-8.txt')
     actual = core.read(filename)
     self.assertEqual(actual.encoding, 'utf-8')
예제 #19
0
 def test_decode_utf8(self):
     filename = helper.fixture('cyrillic-utf-8.txt')
     actual = core.read(filename)
     self.assertEqual(actual.encoding, 'utf-8')
예제 #20
0
 def test_decode_non_utf8(self):
     filename = helper.fixture('cyrillic-cp1251.txt')
     actual = core.read(filename)
     self.assertEqual(actual.encoding, 'iso-8859-15')
예제 #21
0
 def setUp(self):
     self.parser = diffparse.DiffLines()
     fixture_path = helper.fixture('diff.txt')
     self.text = core.read(fixture_path)
예제 #22
0
 def test_decode_non_utf8_string(self):
     filename = helper.fixture('cyrillic-cp1251.txt')
     with open(filename, 'rb') as f:
         content = f.read()
     actual = core.decode(content)
     self.assertEqual(actual.encoding, 'iso-8859-15')