1 from __future__
import absolute_import
, division
, unicode_literals
6 from cola
.diffparse
import _parse_range_str
, DiffParser
8 from test
import helper
11 class ParseDiffTestCase(unittest
.TestCase
):
13 fixture_path
= helper
.fixture('diff.txt')
14 parser
= DiffParser('cola/diffparse.py', core
.read(fixture_path
))
17 self
.assertEqual(len(hunks
), 3)
19 self
.assertEqual(hunks
[0].first_line_idx
, 0)
20 self
.assertEqual(len(hunks
[0].lines
), 23)
21 self
.assertEqual(hunks
[0].lines
[0],
22 '@@ -6,10 +6,21 @@ from cola import gitcmds')
23 self
.assertEqual(hunks
[0].lines
[1],
24 ' from cola import gitcfg')
25 self
.assertEqual(hunks
[0].lines
[2],
27 self
.assertEqual(hunks
[0].lines
[3],
29 self
.assertEqual(hunks
[0].lines
[4],
30 '+class DiffSource(object):')
31 self
.assertEqual(hunks
[0].lines
[-1],
32 " self._header_start_re = re.compile('^@@ -(\d+)"
33 " \+(\d+),(\d+) @@.*')")
35 self
.assertEqual(hunks
[1].first_line_idx
, 23)
36 self
.assertEqual(len(hunks
[1].lines
), 18)
37 self
.assertEqual(hunks
[1].lines
[0],
38 '@@ -29,13 +40,11 @@ class DiffParser(object):')
39 self
.assertEqual(hunks
[1].lines
[1],
40 ' self.diff_sel = []')
41 self
.assertEqual(hunks
[1].lines
[2],
42 ' self.selected = []')
43 self
.assertEqual(hunks
[1].lines
[3],
44 ' self.filename = filename')
45 self
.assertEqual(hunks
[1].lines
[4],
46 '+ self.diff_source = diff_source or DiffSource()')
47 self
.assertEqual(hunks
[1].lines
[-1],
48 ' self.header = header')
50 self
.assertEqual(hunks
[2].first_line_idx
, 41)
51 self
.assertEqual(len(hunks
[2].lines
), 16)
52 self
.assertEqual(hunks
[2].lines
[0],
53 '@@ -43,11 +52,10 @@ class DiffParser(object):')
54 self
.assertEqual(hunks
[2].lines
[-1],
55 ' """Writes a new diff corresponding to the user\'s'
58 def test_diff_at_start(self
):
59 fixture_path
= helper
.fixture('diff-start.txt')
60 parser
= DiffParser('foo bar/a', core
.read(fixture_path
))
63 self
.assertEqual(hunks
[0].lines
[0], '@@ -1 +1,4 @@')
64 self
.assertEqual(hunks
[-1].lines
[-1], '+c')
65 self
.assertEqual(hunks
[0].old_start
, 1)
66 self
.assertEqual(hunks
[0].old_count
, 1)
67 self
.assertEqual(hunks
[0].new_start
, 1)
68 self
.assertEqual(hunks
[0].new_count
, 4)
69 self
.assertEqual(parser
.generate_patch(1, 3),
76 self
.assertEqual(parser
.generate_patch(0, 4),
85 def test_diff_at_end(self
):
86 fixture_path
= helper
.fixture('diff-end.txt')
87 parser
= DiffParser('rijndael.js', core
.read(fixture_path
))
90 self
.assertEqual(hunks
[0].lines
[0],
92 self
.assertEqual(hunks
[-1].lines
[-1],
93 "+module.exports = require('./build/Release/rijndael');")
94 self
.assertEqual(hunks
[0].old_start
, 1)
95 self
.assertEqual(hunks
[0].old_count
, 39)
96 self
.assertEqual(hunks
[0].new_start
, 1)
97 self
.assertEqual(hunks
[0].new_count
, 1)
99 def test_diff_that_empties_file(self
):
100 fixture_path
= helper
.fixture('diff-empty.txt')
101 parser
= DiffParser('filename', core
.read(fixture_path
))
104 self
.assertEqual(hunks
[0].lines
[0],
106 self
.assertEqual(hunks
[-1].lines
[-1],
108 self
.assertEqual(hunks
[0].old_start
, 1)
109 self
.assertEqual(hunks
[0].old_count
, 2)
110 self
.assertEqual(hunks
[0].new_start
, 0)
111 self
.assertEqual(hunks
[0].new_count
, 0)
112 self
.assertEqual(parser
.generate_patch(1, 1),
118 self
.assertEqual(parser
.generate_patch(0, 2),
126 class ParseRangeStrTestCase(unittest
.TestCase
):
127 def test_parse_range_str(self
):
128 start
, count
= _parse_range_str('1,2')
129 self
.assertEqual(start
, 1)
130 self
.assertEqual(count
, 2)
132 def test_parse_range_str_single_line(self
):
133 start
, count
= _parse_range_str('2')
134 self
.assertEqual(start
, 2)
135 self
.assertEqual(count
, 1)
137 def test_parse_range_str_empty(self
):
138 start
, count
= _parse_range_str('0,0')
139 self
.assertEqual(start
, 0)
140 self
.assertEqual(count
, 0)
143 if __name__
== '__main__':