|
@@ -74,14 +74,14 @@ class TestPatchStream(unittest.TestCase):
|
74
|
74
|
class TestHunk(unittest.TestCase):
|
75
|
75
|
|
76
|
76
|
def test_get_old_text(self):
|
77
|
|
- hunk = cdiff.Hunk([], '@@ -1,2 +1,2 @@', (1,2), (1,2))
|
|
77
|
+ hunk = cdiff.Hunk([], '@@ -1,2 +1,2 @@', (1, 2), (1, 2))
|
78
|
78
|
hunk.append(('-', 'foo\n'))
|
79
|
79
|
hunk.append(('+', 'bar\n'))
|
80
|
80
|
hunk.append((' ', 'common\n'))
|
81
|
81
|
self.assertEqual(hunk._get_old_text(), ['foo\n', 'common\n'])
|
82
|
82
|
|
83
|
83
|
def test_get_new_text(self):
|
84
|
|
- hunk = cdiff.Hunk([], '@@ -1,2 +1,2 @@', (1,2), (1,2))
|
|
84
|
+ hunk = cdiff.Hunk([], '@@ -1,2 +1,2 @@', (1, 2), (1, 2))
|
85
|
85
|
hunk.append(('-', 'foo\n'))
|
86
|
86
|
hunk.append(('+', 'bar\n'))
|
87
|
87
|
hunk.append((' ', 'common\n'))
|
|
@@ -91,7 +91,8 @@ class TestHunk(unittest.TestCase):
|
91
|
91
|
class TestDiff(unittest.TestCase):
|
92
|
92
|
|
93
|
93
|
def _init_diff(self):
|
94
|
|
- hunk = cdiff.Hunk(['hunk header\n'], '@@ -1,2 +1,2 @@\n', (1,2), (1,2))
|
|
94
|
+ hunk = cdiff.Hunk(['hunk header\n'], '@@ -1,2 +1,2 @@\n',
|
|
95
|
+ (1, 2), (1, 2))
|
95
|
96
|
hunk.append(('-', 'hella\n'))
|
96
|
97
|
hunk.append(('+', 'hello\n'))
|
97
|
98
|
hunk.append((' ', 'world\n'))
|
|
@@ -102,10 +103,11 @@ class TestDiff(unittest.TestCase):
|
102
|
103
|
line = 'foo \x00-del\x01 \x00+add\x01 \x00^chg\x01 bar'
|
103
|
104
|
base_color = 'red'
|
104
|
105
|
diff = cdiff.Diff(None, None, None, None)
|
105
|
|
- self.assertEqual(diff._markup_mix(line, base_color),
|
106
|
|
- '\x1b[31mfoo \x1b[7m\x1b[31mdel\x1b[0m\x1b[31m '
|
107
|
|
- '\x1b[7m\x1b[31madd\x1b[0m\x1b[31m '
|
108
|
|
- '\x1b[4m\x1b[31mchg\x1b[0m\x1b[31m bar\x1b[0m')
|
|
106
|
+ self.assertEqual(
|
|
107
|
+ diff._markup_mix(line, base_color),
|
|
108
|
+ '\x1b[31mfoo \x1b[7m\x1b[31mdel\x1b[0m\x1b[31m '
|
|
109
|
+ '\x1b[7m\x1b[31madd\x1b[0m\x1b[31m '
|
|
110
|
+ '\x1b[4m\x1b[31mchg\x1b[0m\x1b[31m bar\x1b[0m')
|
109
|
111
|
|
110
|
112
|
def test_markup_traditional(self):
|
111
|
113
|
diff = self._init_diff()
|
|
@@ -121,12 +123,14 @@ class TestDiff(unittest.TestCase):
|
121
|
123
|
self.assertEqual(out[2], '\x1b[33m+++ new\n\x1b[0m')
|
122
|
124
|
self.assertEqual(out[3], '\x1b[1;36mhunk header\n\x1b[0m')
|
123
|
125
|
self.assertEqual(out[4], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
|
124
|
|
- self.assertEqual(out[5],
|
125
|
|
- '\x1b[1;31m-\x1b[0m\x1b[31mhell\x1b[4m'
|
126
|
|
- '\x1b[31ma\x1b[0m\x1b[31m\n\x1b[0m')
|
127
|
|
- self.assertEqual(out[6],
|
128
|
|
- '\x1b[1;32m+\x1b[0m\x1b[32mhell\x1b[4m'
|
129
|
|
- '\x1b[32mo\x1b[0m\x1b[32m\n\x1b[0m')
|
|
126
|
+ self.assertEqual(
|
|
127
|
+ out[5],
|
|
128
|
+ '\x1b[1;31m-\x1b[0m\x1b[31mhell\x1b[4m'
|
|
129
|
+ '\x1b[31ma\x1b[0m\x1b[31m\n\x1b[0m')
|
|
130
|
+ self.assertEqual(
|
|
131
|
+ out[6],
|
|
132
|
+ '\x1b[1;32m+\x1b[0m\x1b[32mhell\x1b[4m'
|
|
133
|
+ '\x1b[32mo\x1b[0m\x1b[32m\n\x1b[0m')
|
130
|
134
|
self.assertEqual(out[7], '\x1b[0m world\n\x1b[0m')
|
131
|
135
|
|
132
|
136
|
def test_markup_side_by_side_padded(self):
|
|
@@ -143,16 +147,18 @@ class TestDiff(unittest.TestCase):
|
143
|
147
|
self.assertEqual(out[2], '\x1b[33m+++ new\n\x1b[0m')
|
144
|
148
|
self.assertEqual(out[3], '\x1b[1;36mhunk header\n\x1b[0m')
|
145
|
149
|
self.assertEqual(out[4], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
|
146
|
|
- self.assertEqual(out[5],
|
147
|
|
- '\x1b[33m1\x1b[0m '
|
148
|
|
- '\x1b[31mhell\x1b[4m\x1b[31ma\x1b[0m\x1b[31m\x1b[0m '
|
149
|
|
- '\x1b[0m\x1b[33m1\x1b[0m '
|
150
|
|
- '\x1b[32mhell\x1b[4m\x1b[32mo\x1b[0m\x1b[32m\x1b[0m\n')
|
151
|
|
- self.assertEqual(out[6],
|
152
|
|
- '\x1b[33m2\x1b[0m '
|
153
|
|
- '\x1b[0mworld\x1b[0m '
|
154
|
|
- '\x1b[0m\x1b[33m2\x1b[0m '
|
155
|
|
- '\x1b[0mworld\x1b[0m\n')
|
|
150
|
+ self.assertEqual(
|
|
151
|
+ out[5],
|
|
152
|
+ '\x1b[33m1\x1b[0m '
|
|
153
|
+ '\x1b[31mhell\x1b[4m\x1b[31ma\x1b[0m\x1b[31m\x1b[0m '
|
|
154
|
+ '\x1b[0m\x1b[33m1\x1b[0m '
|
|
155
|
+ '\x1b[32mhell\x1b[4m\x1b[32mo\x1b[0m\x1b[32m\x1b[0m\n')
|
|
156
|
+ self.assertEqual(
|
|
157
|
+ out[6],
|
|
158
|
+ '\x1b[33m2\x1b[0m '
|
|
159
|
+ '\x1b[0mworld\x1b[0m '
|
|
160
|
+ '\x1b[0m\x1b[33m2\x1b[0m '
|
|
161
|
+ '\x1b[0mworld\x1b[0m\n')
|
156
|
162
|
|
157
|
163
|
def test_markup_side_by_side_off_by_one(self):
|
158
|
164
|
diff = self._init_diff()
|
|
@@ -168,16 +174,18 @@ class TestDiff(unittest.TestCase):
|
168
|
174
|
self.assertEqual(out[2], '\x1b[33m+++ new\n\x1b[0m')
|
169
|
175
|
self.assertEqual(out[3], '\x1b[1;36mhunk header\n\x1b[0m')
|
170
|
176
|
self.assertEqual(out[4], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
|
171
|
|
- self.assertEqual(out[5],
|
172
|
|
- '\x1b[33m1\x1b[0m '
|
173
|
|
- '\x1b[31mhell\x1b[4m\x1b[31ma\x1b[0m '
|
174
|
|
- '\x1b[0m\x1b[33m1\x1b[0m '
|
175
|
|
- '\x1b[32mhell\x1b[4m\x1b[32mo\x1b[0m\n')
|
176
|
|
- self.assertEqual(out[6],
|
177
|
|
- '\x1b[33m2\x1b[0m '
|
178
|
|
- '\x1b[0mworld\x1b[0m '
|
179
|
|
- '\x1b[0m\x1b[33m2\x1b[0m '
|
180
|
|
- '\x1b[0mworld\x1b[0m\n')
|
|
177
|
+ self.assertEqual(
|
|
178
|
+ out[5],
|
|
179
|
+ '\x1b[33m1\x1b[0m '
|
|
180
|
+ '\x1b[31mhell\x1b[4m\x1b[31ma\x1b[0m '
|
|
181
|
+ '\x1b[0m\x1b[33m1\x1b[0m '
|
|
182
|
+ '\x1b[32mhell\x1b[4m\x1b[32mo\x1b[0m\n')
|
|
183
|
+ self.assertEqual(
|
|
184
|
+ out[6],
|
|
185
|
+ '\x1b[33m2\x1b[0m '
|
|
186
|
+ '\x1b[0mworld\x1b[0m '
|
|
187
|
+ '\x1b[0m\x1b[33m2\x1b[0m '
|
|
188
|
+ '\x1b[0mworld\x1b[0m\n')
|
181
|
189
|
|
182
|
190
|
def test_markup_side_by_side_wrapped(self):
|
183
|
191
|
diff = self._init_diff()
|
|
@@ -193,16 +201,18 @@ class TestDiff(unittest.TestCase):
|
193
|
201
|
self.assertEqual(out[2], '\x1b[33m+++ new\n\x1b[0m')
|
194
|
202
|
self.assertEqual(out[3], '\x1b[1;36mhunk header\n\x1b[0m')
|
195
|
203
|
self.assertEqual(out[4], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
|
196
|
|
- self.assertEqual(out[5],
|
197
|
|
- '\x1b[33m1\x1b[0m '
|
198
|
|
- '\x1b[31mhel\x1b[0m\x1b[1;35m>\x1b[0m '
|
199
|
|
- '\x1b[0m\x1b[33m1\x1b[0m '
|
200
|
|
- '\x1b[32mhel\x1b[0m\x1b[1;35m>\x1b[0m\n')
|
201
|
|
- self.assertEqual(out[6],
|
202
|
|
- '\x1b[33m2\x1b[0m '
|
203
|
|
- '\x1b[0mwor\x1b[0m\x1b[1;35m>\x1b[0m '
|
204
|
|
- '\x1b[0m\x1b[33m2\x1b[0m '
|
205
|
|
- '\x1b[0mwor\x1b[0m\x1b[1;35m>\x1b[0m\n')
|
|
204
|
+ self.assertEqual(
|
|
205
|
+ out[5],
|
|
206
|
+ '\x1b[33m1\x1b[0m '
|
|
207
|
+ '\x1b[31mhel\x1b[0m\x1b[1;35m>\x1b[0m '
|
|
208
|
+ '\x1b[0m\x1b[33m1\x1b[0m '
|
|
209
|
+ '\x1b[32mhel\x1b[0m\x1b[1;35m>\x1b[0m\n')
|
|
210
|
+ self.assertEqual(
|
|
211
|
+ out[6],
|
|
212
|
+ '\x1b[33m2\x1b[0m '
|
|
213
|
+ '\x1b[0mwor\x1b[0m\x1b[1;35m>\x1b[0m '
|
|
214
|
+ '\x1b[0m\x1b[33m2\x1b[0m '
|
|
215
|
+ '\x1b[0mwor\x1b[0m\x1b[1;35m>\x1b[0m\n')
|
206
|
216
|
|
207
|
217
|
|
208
|
218
|
class TestUdiff(unittest.TestCase):
|
|
@@ -214,7 +224,8 @@ class TestUdiff(unittest.TestCase):
|
214
|
224
|
self.assertTrue(self.diff.is_hunk_meta('@@ -3,7 +3,6 @@'))
|
215
|
225
|
self.assertTrue(self.diff.is_hunk_meta('@@ -3,7 +3,6 @@ class Foo'))
|
216
|
226
|
self.assertTrue(self.diff.is_hunk_meta('@@ -3,7 +3,6 @@ class Foo\n'))
|
217
|
|
- self.assertTrue(self.diff.is_hunk_meta('@@ -3,7 +3,6 @@ class Foo\r\n'))
|
|
227
|
+ self.assertTrue(
|
|
228
|
+ self.diff.is_hunk_meta('@@ -3,7 +3,6 @@ class Foo\r\n'))
|
218
|
229
|
|
219
|
230
|
def test_is_hunk_meta_svn_prop(self):
|
220
|
231
|
self.assertTrue(self.diff.is_hunk_meta('## -0,0 +1 ##'))
|
|
@@ -227,33 +238,28 @@ class TestUdiff(unittest.TestCase):
|
227
|
238
|
self.assertFalse(self.diff.is_hunk_meta('## -this is not either'))
|
228
|
239
|
|
229
|
240
|
def test_parse_hunk_meta_normal(self):
|
230
|
|
- self.assertEqual(
|
231
|
|
- self.diff.parse_hunk_meta('@@ -3,7 +3,6 @@'),
|
232
|
|
- ((3, 7), (3, 6)))
|
|
241
|
+ self.assertEqual(self.diff.parse_hunk_meta('@@ -3,7 +3,6 @@'),
|
|
242
|
+ ((3, 7), (3, 6)))
|
233
|
243
|
|
234
|
244
|
def test_parse_hunk_meta_missing(self):
|
235
|
|
- self.assertEqual(
|
236
|
|
- self.diff.parse_hunk_meta('@@ -3 +3,6 @@'),
|
237
|
|
- ((3, 0), (3, 6)))
|
238
|
|
- self.assertEqual(
|
239
|
|
- self.diff.parse_hunk_meta('@@ -3,7 +3 @@'),
|
240
|
|
- ((3, 7), (3, 0)))
|
241
|
|
- self.assertEqual(
|
242
|
|
- self.diff.parse_hunk_meta('@@ -3 +3 @@'),
|
243
|
|
- ((3, 0), (3, 0)))
|
|
245
|
+ self.assertEqual(self.diff.parse_hunk_meta('@@ -3 +3,6 @@'),
|
|
246
|
+ ((3, 0), (3, 6)))
|
|
247
|
+ self.assertEqual(self.diff.parse_hunk_meta('@@ -3,7 +3 @@'),
|
|
248
|
+ ((3, 7), (3, 0)))
|
|
249
|
+ self.assertEqual(self.diff.parse_hunk_meta('@@ -3 +3 @@'),
|
|
250
|
+ ((3, 0), (3, 0)))
|
244
|
251
|
|
245
|
252
|
def test_parse_hunk_meta_svn_prop(self):
|
246
|
|
- self.assertEqual(
|
247
|
|
- self.diff.parse_hunk_meta('## -0,0 +1 ##'),
|
248
|
|
- ((0, 0), (1, 0)))
|
|
253
|
+ self.assertEqual(self.diff.parse_hunk_meta('## -0,0 +1 ##'),
|
|
254
|
+ ((0, 0), (1, 0)))
|
249
|
255
|
|
250
|
256
|
def test_is_old(self):
|
251
|
257
|
self.assertTrue(self.diff.is_old('-hello world'))
|
252
|
|
- self.assertTrue(self.diff.is_old('----')) # yaml
|
|
258
|
+ self.assertTrue(self.diff.is_old('----')) # yaml
|
253
|
259
|
|
254
|
260
|
def test_is_old_neg(self):
|
255
|
261
|
self.assertFalse(self.diff.is_old('--- considered as old path'))
|
256
|
|
- self.assertFalse(self.diff.is_old('-------------')) # svn log --diff
|
|
262
|
+ self.assertFalse(self.diff.is_old('-------------')) # svn log --diff
|
257
|
263
|
|
258
|
264
|
def test_is_new(self):
|
259
|
265
|
self.assertTrue(self.diff.is_new('+hello world'))
|