Explorar el Código

Enough unit tests (95%)

Matthew Wang hace 11 años
padre
commit
a09947c1b5
Se han modificado 2 ficheros con 218 adiciones y 56 borrados
  1. 4
    7
      cdiff.py
  2. 214
    49
      tests/test_cdiff.py

+ 4
- 7
cdiff.py Ver fichero

@@ -488,12 +488,6 @@ class DiffParser(object):
488 488
             raise RuntimeError('unknown diff type')
489 489
 
490 490
     def get_diff_generator(self):
491
-        try:
492
-            return self._parse()
493
-        except (AssertionError, IndexError):
494
-            raise RuntimeError('invalid patch format')
495
-
496
-    def _parse(self):
497 491
         """parse all diff lines, construct a list of Diff objects"""
498 492
         if self._type == 'udiff':
499 493
             difflet = Udiff(None, None, None, None)
@@ -522,7 +516,10 @@ class DiffParser(object):
522 516
 
523 517
             elif difflet.is_hunk_meta(line):
524 518
                 hunk_meta = line
525
-                old_addr, new_addr = difflet.parse_hunk_meta(hunk_meta)
519
+                try:
520
+                    old_addr, new_addr = difflet.parse_hunk_meta(hunk_meta)
521
+                except (IndexError, ValueError):
522
+                    raise RuntimeError('invalid hunk meta: %s' % hunk_meta)
526 523
                 hunk = Hunk(headers, hunk_meta, old_addr, new_addr)
527 524
                 headers = []
528 525
                 diff._hunks.append(hunk)

+ 214
- 49
tests/test_cdiff.py Ver fichero

@@ -91,11 +91,30 @@ 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',
95
-                          (1, 2), (1, 2))
96
-        hunk.append(('-', 'hella\n'))
97
-        hunk.append(('+', 'hello\n'))
94
+        """Return a minimal diff contains all required samples
95
+            header
96
+            --- old
97
+            +++ new
98
+            hunk header
99
+            @@ -1,4 +1,4 @@
100
+            -hhello
101
+            +helloo
102
+            +spammm
103
+             world
104
+            -garb
105
+            -Again
106
+            +again
107
+        """
108
+
109
+        hunk = cdiff.Hunk(['hunk header\n'], '@@ -1,4 +1,4 @@\n',
110
+                          (1, 4), (1, 4))
111
+        hunk.append(('-', 'hhello\n'))
112
+        hunk.append(('+', 'helloo\n'))
113
+        hunk.append(('+', 'spammm\n'))
98 114
         hunk.append((' ', 'world\n'))
115
+        hunk.append(('-', 'garb\n'))
116
+        hunk.append(('-', 'Again\n'))
117
+        hunk.append(('+', 'again\n'))
99 118
         diff = cdiff.Diff(['header\n'], '--- old\n', '+++ new\n', [hunk])
100 119
         return diff
101 120
 
@@ -109,10 +128,71 @@ class TestDiff(unittest.TestCase):
109 128
             '\x1b[7m\x1b[31madd\x1b[0m\x1b[31m '
110 129
             '\x1b[4m\x1b[31mchg\x1b[0m\x1b[31m bar\x1b[0m')
111 130
 
112
-    def test_markup_traditional(self):
113
-        diff = self._init_diff()
131
+    def test_markup_traditional_hunk_header(self):
132
+        hunk = cdiff.Hunk(['hunk header\n'], '@@ -0 +0 @@\n', (0, 0), (0, 0))
133
+        diff = cdiff.Diff([], '--- old\n', '+++ new\n', [hunk])
134
+
135
+        out = list(diff.markup_traditional())
136
+        self.assertEqual(len(out), 4)
137
+
138
+        self.assertEqual(out[0], '\x1b[33m--- old\n\x1b[0m')
139
+        self.assertEqual(out[1], '\x1b[33m+++ new\n\x1b[0m')
140
+        self.assertEqual(out[2], '\x1b[1;36mhunk header\n\x1b[0m')
141
+        self.assertEqual(out[3], '\x1b[1;34m@@ -0 +0 @@\n\x1b[0m')
142
+
143
+    def test_markup_traditional_old_changed(self):
144
+        hunk = cdiff.Hunk([], '@@ -1 +0,0 @@\n', (1, 0), (0, 0))
145
+        hunk.append(('-', 'spam\n'))
146
+        diff = cdiff.Diff([], '--- old\n', '+++ new\n', [hunk])
147
+
148
+        out = list(diff.markup_traditional())
149
+        self.assertEqual(len(out), 4)
150
+
151
+        self.assertEqual(out[0], '\x1b[33m--- old\n\x1b[0m')
152
+        self.assertEqual(out[1], '\x1b[33m+++ new\n\x1b[0m')
153
+        self.assertEqual(out[2], '\x1b[1;34m@@ -1 +0,0 @@\n\x1b[0m')
154
+        self.assertEqual(out[3], '\x1b[1;31m-spam\n\x1b[0m')
155
+
156
+    def test_markup_traditional_new_changed(self):
157
+        hunk = cdiff.Hunk([], '@@ -0,0 +1 @@\n', (0, 0), (1, 0))
158
+        hunk.append(('+', 'spam\n'))
159
+        diff = cdiff.Diff([], '--- old\n', '+++ new\n', [hunk])
160
+
161
+        out = list(diff.markup_traditional())
162
+        self.assertEqual(len(out), 4)
163
+
164
+        self.assertEqual(out[0], '\x1b[33m--- old\n\x1b[0m')
165
+        self.assertEqual(out[1], '\x1b[33m+++ new\n\x1b[0m')
166
+        self.assertEqual(out[2], '\x1b[1;34m@@ -0,0 +1 @@\n\x1b[0m')
167
+        self.assertEqual(out[3], '\x1b[1;32m+spam\n\x1b[0m')
168
+
169
+    def test_markup_traditional_both_changed(self):
170
+        hunk = cdiff.Hunk([], '@@ -1,2 +1,2 @@\n', (1, 2), (1, 2))
171
+        hunk.append(('-', 'hella\n'))
172
+        hunk.append(('+', 'hello\n'))
173
+        hunk.append((' ', 'common\n'))
174
+        diff = cdiff.Diff([], '--- old\n', '+++ new\n', [hunk])
175
+
114 176
         out = list(diff.markup_traditional())
115
-        self.assertEqual(len(out), 8)
177
+        self.assertEqual(len(out), 6)
178
+
179
+        self.assertEqual(out[0], '\x1b[33m--- old\n\x1b[0m')
180
+        self.assertEqual(out[1], '\x1b[33m+++ new\n\x1b[0m')
181
+        self.assertEqual(out[2], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
182
+        self.assertEqual(
183
+            out[3],
184
+            '\x1b[1;31m-\x1b[0m\x1b[31mhell'
185
+            '\x1b[4m\x1b[31ma\x1b[0m\x1b[31m\n\x1b[0m')
186
+        self.assertEqual(
187
+            out[4],
188
+            '\x1b[1;32m+\x1b[0m\x1b[32mhell'
189
+            '\x1b[4m\x1b[32mo\x1b[0m\x1b[32m\n\x1b[0m')
190
+        self.assertEqual(out[5], '\x1b[0m common\n\x1b[0m')
191
+
192
+    def test_markup_side_by_side_padded(self):
193
+        diff = self._init_diff()
194
+        out = list(diff.markup_side_by_side(7))
195
+        self.assertEqual(len(out), 10)
116 196
 
117 197
         sys.stdout.write('\n')
118 198
         for markup in out:
@@ -122,48 +202,85 @@ class TestDiff(unittest.TestCase):
122 202
         self.assertEqual(out[1], '\x1b[33m--- old\n\x1b[0m')
123 203
         self.assertEqual(out[2], '\x1b[33m+++ new\n\x1b[0m')
124 204
         self.assertEqual(out[3], '\x1b[1;36mhunk header\n\x1b[0m')
125
-        self.assertEqual(out[4], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
205
+        self.assertEqual(out[4], '\x1b[1;34m@@ -1,4 +1,4 @@\n\x1b[0m')
126 206
         self.assertEqual(
127 207
             out[5],
128
-            '\x1b[1;31m-\x1b[0m\x1b[31mhell\x1b[4m'
129
-            '\x1b[31ma\x1b[0m\x1b[31m\n\x1b[0m')
208
+            '\x1b[33m1\x1b[0m '
209
+            '\x1b[31m\x1b[7m\x1b[31mh\x1b[0m\x1b[31mhello\x1b[0m  '
210
+            '\x1b[0m\x1b[33m1\x1b[0m '
211
+            '\x1b[32mhello\x1b[7m\x1b[32mo\x1b[0m\x1b[32m\x1b[0m\n')
130 212
         self.assertEqual(
131 213
             out[6],
132
-            '\x1b[1;32m+\x1b[0m\x1b[32mhell\x1b[4m'
133
-            '\x1b[32mo\x1b[0m\x1b[32m\n\x1b[0m')
134
-        self.assertEqual(out[7], '\x1b[0m world\n\x1b[0m')
214
+            '\x1b[33m '
215
+            '\x1b[0m         '
216
+            '\x1b[0m\x1b[33m2\x1b[0m '
217
+            '\x1b[1;32mspammm\x1b[0m\n')
218
+        self.assertEqual(
219
+            out[7],
220
+            '\x1b[33m2\x1b[0m '
221
+            '\x1b[0mworld\x1b[0m   '
222
+            '\x1b[0m\x1b[33m3\x1b[0m '
223
+            '\x1b[0mworld\x1b[0m\n')
224
+        self.assertEqual(
225
+            out[8],
226
+            '\x1b[33m3\x1b[0m '
227
+            '\x1b[1;31mgarb\x1b[0m '
228
+            '\x1b[0m\x1b[33m '
229
+            '\x1b[0m \n')
230
+        self.assertEqual(
231
+            out[9],
232
+            '\x1b[33m4\x1b[0m '
233
+            '\x1b[31m\x1b[4m\x1b[31mA\x1b[0m\x1b[31mgain\x1b[0m   '
234
+            '\x1b[0m\x1b[33m4\x1b[0m '
235
+            '\x1b[32m\x1b[4m\x1b[32ma\x1b[0m\x1b[32mgain\x1b[0m\n')
135 236
 
136
-    def test_markup_side_by_side_padded(self):
237
+    def test_markup_side_by_side_neg_width(self):
137 238
         diff = self._init_diff()
138
-        out = list(diff.markup_side_by_side(6))
139
-        self.assertEqual(len(out), 7)
140
-
141
-        sys.stdout.write('\n')
142
-        for markup in out:
143
-            sys.stdout.write(markup)
239
+        out = list(diff.markup_side_by_side(-1))
240
+        self.assertEqual(len(out), 10)
144 241
 
145 242
         self.assertEqual(out[0], '\x1b[36mheader\n\x1b[0m')
146 243
         self.assertEqual(out[1], '\x1b[33m--- old\n\x1b[0m')
147 244
         self.assertEqual(out[2], '\x1b[33m+++ new\n\x1b[0m')
148 245
         self.assertEqual(out[3], '\x1b[1;36mhunk header\n\x1b[0m')
149
-        self.assertEqual(out[4], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
246
+        self.assertEqual(out[4], '\x1b[1;34m@@ -1,4 +1,4 @@\n\x1b[0m')
150 247
         self.assertEqual(
151 248
             out[5],
152 249
             '\x1b[33m1\x1b[0m '
153
-            '\x1b[31mhell\x1b[4m\x1b[31ma\x1b[0m\x1b[31m\x1b[0m  '
250
+            '\x1b[31m\x1b[7m\x1b[31mh\x1b[0m\x1b[31mhello\x1b[0m ' +
251
+            (' ' * 74) +
154 252
             '\x1b[0m\x1b[33m1\x1b[0m '
155
-            '\x1b[32mhell\x1b[4m\x1b[32mo\x1b[0m\x1b[32m\x1b[0m\n')
253
+            '\x1b[32mhello\x1b[7m\x1b[32mo\x1b[0m\x1b[32m\x1b[0m\n')
156 254
         self.assertEqual(
157 255
             out[6],
158
-            '\x1b[33m2\x1b[0m '
159
-            '\x1b[0mworld\x1b[0m  '
256
+            '\x1b[33m '
257
+            '\x1b[0m  ' + (' ' * 80) +
160 258
             '\x1b[0m\x1b[33m2\x1b[0m '
259
+            '\x1b[1;32mspammm\x1b[0m\n')
260
+        self.assertEqual(
261
+            out[7],
262
+            '\x1b[33m2\x1b[0m '
263
+            '\x1b[0mworld\x1b[0m ' + (' ' * 75) +
264
+            '\x1b[0m\x1b[33m3\x1b[0m '
161 265
             '\x1b[0mworld\x1b[0m\n')
266
+        self.assertEqual(
267
+            out[8],
268
+            '\x1b[33m3\x1b[0m '
269
+            '\x1b[1;31mgarb\x1b[0m '
270
+            '\x1b[0m\x1b[33m '
271
+            '\x1b[0m \n')
272
+        self.assertEqual(
273
+            out[9],
274
+            '\x1b[33m4\x1b[0m '
275
+            '\x1b[31m\x1b[4m\x1b[31mA\x1b[0m\x1b[31mgain\x1b[0m ' +
276
+            (' ' * 75) +
277
+            '\x1b[0m\x1b[33m4\x1b[0m '
278
+            '\x1b[32m\x1b[4m\x1b[32ma\x1b[0m\x1b[32mgain\x1b[0m\n')
162 279
 
163 280
     def test_markup_side_by_side_off_by_one(self):
164 281
         diff = self._init_diff()
165
-        out = list(diff.markup_side_by_side(5))
166
-        self.assertEqual(len(out), 7)
282
+        out = list(diff.markup_side_by_side(6))
283
+        self.assertEqual(len(out), 10)
167 284
 
168 285
         sys.stdout.write('\n')
169 286
         for markup in out:
@@ -173,24 +290,41 @@ class TestDiff(unittest.TestCase):
173 290
         self.assertEqual(out[1], '\x1b[33m--- old\n\x1b[0m')
174 291
         self.assertEqual(out[2], '\x1b[33m+++ new\n\x1b[0m')
175 292
         self.assertEqual(out[3], '\x1b[1;36mhunk header\n\x1b[0m')
176
-        self.assertEqual(out[4], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
293
+        self.assertEqual(out[4], '\x1b[1;34m@@ -1,4 +1,4 @@\n\x1b[0m')
177 294
         self.assertEqual(
178 295
             out[5],
179 296
             '\x1b[33m1\x1b[0m '
180
-            '\x1b[31mhell\x1b[4m\x1b[31ma\x1b[0m '
297
+            '\x1b[31m\x1b[7m\x1b[31mh\x1b[0m\x1b[31mhello\x1b[0m '
181 298
             '\x1b[0m\x1b[33m1\x1b[0m '
182
-            '\x1b[32mhell\x1b[4m\x1b[32mo\x1b[0m\n')
299
+            '\x1b[32mhello\x1b[7m\x1b[32mo\x1b[0m\n')
183 300
         self.assertEqual(
184 301
             out[6],
185
-            '\x1b[33m2\x1b[0m '
186
-            '\x1b[0mworld\x1b[0m '
302
+            '\x1b[33m \x1b[0m        '
187 303
             '\x1b[0m\x1b[33m2\x1b[0m '
304
+            '\x1b[1;32mspammm\x1b[0m\n')
305
+        self.assertEqual(
306
+            out[7],
307
+            '\x1b[33m2\x1b[0m '
308
+            '\x1b[0mworld\x1b[0m  '
309
+            '\x1b[0m\x1b[33m3\x1b[0m '
188 310
             '\x1b[0mworld\x1b[0m\n')
311
+        self.assertEqual(
312
+            out[8],
313
+            '\x1b[33m3\x1b[0m '
314
+            '\x1b[1;31mgarb\x1b[0m '
315
+            '\x1b[0m\x1b[33m '
316
+            '\x1b[0m \n')
317
+        self.assertEqual(
318
+            out[9],
319
+            '\x1b[33m4\x1b[0m '
320
+            '\x1b[31m\x1b[4m\x1b[31mA\x1b[0m\x1b[31mgain\x1b[0m  '
321
+            '\x1b[0m\x1b[33m4\x1b[0m '
322
+            '\x1b[32m\x1b[4m\x1b[32ma\x1b[0m\x1b[32mgain\x1b[0m\n')
189 323
 
190 324
     def test_markup_side_by_side_wrapped(self):
191 325
         diff = self._init_diff()
192
-        out = list(diff.markup_side_by_side(4))
193
-        self.assertEqual(len(out), 7)
326
+        out = list(diff.markup_side_by_side(5))
327
+        self.assertEqual(len(out), 10)
194 328
 
195 329
         sys.stdout.write('\n')
196 330
         for markup in out:
@@ -200,19 +334,37 @@ class TestDiff(unittest.TestCase):
200 334
         self.assertEqual(out[1], '\x1b[33m--- old\n\x1b[0m')
201 335
         self.assertEqual(out[2], '\x1b[33m+++ new\n\x1b[0m')
202 336
         self.assertEqual(out[3], '\x1b[1;36mhunk header\n\x1b[0m')
203
-        self.assertEqual(out[4], '\x1b[1;34m@@ -1,2 +1,2 @@\n\x1b[0m')
337
+        self.assertEqual(out[4], '\x1b[1;34m@@ -1,4 +1,4 @@\n\x1b[0m')
204 338
         self.assertEqual(
205 339
             out[5],
206 340
             '\x1b[33m1\x1b[0m '
207
-            '\x1b[31mhel\x1b[0m\x1b[1;35m>\x1b[0m '
341
+            '\x1b[31m\x1b[7m\x1b[31mh\x1b[0m\x1b[31mhel\x1b[0m\x1b[1;35m>\x1b[0m '
208 342
             '\x1b[0m\x1b[33m1\x1b[0m '
209
-            '\x1b[32mhel\x1b[0m\x1b[1;35m>\x1b[0m\n')
343
+            '\x1b[32mhell\x1b[0m\x1b[1;35m>\x1b[0m\n')
210 344
         self.assertEqual(
211 345
             out[6],
212
-            '\x1b[33m2\x1b[0m '
213
-            '\x1b[0mwor\x1b[0m\x1b[1;35m>\x1b[0m '
346
+            '\x1b[33m \x1b[0m       '
214 347
             '\x1b[0m\x1b[33m2\x1b[0m '
215
-            '\x1b[0mwor\x1b[0m\x1b[1;35m>\x1b[0m\n')
348
+            ''
349
+            '\x1b[1;32mspam\x1b[0m\x1b[1;35m>\x1b[0m\n')
350
+        self.assertEqual(
351
+            out[7],
352
+            '\x1b[33m2\x1b[0m '
353
+            '\x1b[0mworld\x1b[0m '
354
+            '\x1b[0m\x1b[33m3\x1b[0m '
355
+            '\x1b[0mworld\x1b[0m\n')
356
+        self.assertEqual(
357
+            out[8],
358
+            '\x1b[33m3\x1b[0m '
359
+            '\x1b[1;31mgarb\x1b[0m '
360
+            '\x1b[0m\x1b[33m '
361
+            '\x1b[0m \n')
362
+        self.assertEqual(
363
+            out[9],
364
+            '\x1b[33m4\x1b[0m '
365
+            '\x1b[31m\x1b[4m\x1b[31mA\x1b[0m\x1b[31mgain\x1b[0m '
366
+            '\x1b[0m\x1b[33m4\x1b[0m '
367
+            '\x1b[32m\x1b[4m\x1b[32ma\x1b[0m\x1b[32mgain\x1b[0m\n')
216 368
 
217 369
 
218 370
 class TestUdiff(unittest.TestCase):
@@ -294,6 +446,19 @@ spam
294 446
         stream = cdiff.PatchStream(Sequential(items))
295 447
         self.assertRaises(RuntimeError, cdiff.DiffParser, stream)
296 448
 
449
+    def test_parse_invalid_hunk_meta(self):
450
+        patch = r"""\
451
+spam
452
+--- a
453
++++ b
454
+spam
455
+@@ -a,a +0 @@
456
+"""
457
+        items = patch.splitlines(True)
458
+        stream = cdiff.PatchStream(Sequential(items))
459
+        parser = cdiff.DiffParser(stream)
460
+        self.assertRaises(RuntimeError, list, parser.get_diff_generator())
461
+
297 462
     def test_parse_dangling_header(self):
298 463
         patch = r"""\
299 464
 --- a
@@ -307,7 +472,7 @@ spam
307 472
         items = patch.splitlines(True)
308 473
         stream = cdiff.PatchStream(Sequential(items))
309 474
         parser = cdiff.DiffParser(stream)
310
-        self.assertRaises(RuntimeError, list, parser._parse())
475
+        self.assertRaises(RuntimeError, list, parser.get_diff_generator())
311 476
 
312 477
     def test_parse_missing_new_path(self):
313 478
         patch = r"""\
@@ -322,7 +487,7 @@ spam
322 487
         items = patch.splitlines(True)
323 488
         stream = cdiff.PatchStream(Sequential(items))
324 489
         parser = cdiff.DiffParser(stream)
325
-        self.assertRaises(AssertionError, list, parser._parse())
490
+        self.assertRaises(AssertionError, list, parser.get_diff_generator())
326 491
 
327 492
     def test_parse_missing_hunk_meta(self):
328 493
         patch = r"""\
@@ -338,7 +503,7 @@ spam
338 503
         items = patch.splitlines(True)
339 504
         stream = cdiff.PatchStream(Sequential(items))
340 505
         parser = cdiff.DiffParser(stream)
341
-        self.assertRaises(AssertionError, list, parser._parse())
506
+        self.assertRaises(AssertionError, list, parser.get_diff_generator())
342 507
 
343 508
     def test_parse_missing_hunk_list(self):
344 509
         patch = r"""\
@@ -355,7 +520,7 @@ spam
355 520
         items = patch.splitlines(True)
356 521
         stream = cdiff.PatchStream(Sequential(items))
357 522
         parser = cdiff.DiffParser(stream)
358
-        self.assertRaises(AssertionError, list, parser._parse())
523
+        self.assertRaises(AssertionError, list, parser.get_diff_generator())
359 524
 
360 525
     def test_parse_only_in_dir(self):
361 526
         patch = r"""\
@@ -377,7 +542,7 @@ Only in foo: foo
377 542
         stream = cdiff.PatchStream(Sequential(items))
378 543
         parser = cdiff.DiffParser(stream)
379 544
 
380
-        out = list(parser._parse())
545
+        out = list(parser.get_diff_generator())
381 546
         self.assertEqual(len(out), 3)
382 547
         self.assertEqual(len(out[1]._hunks), 0)
383 548
         self.assertEqual(out[1]._headers, ['Only in foo: foo\n'])
@@ -398,7 +563,7 @@ Only in foo: foo
398 563
         stream = cdiff.PatchStream(Sequential(items))
399 564
         parser = cdiff.DiffParser(stream)
400 565
 
401
-        out = list(parser._parse())
566
+        out = list(parser.get_diff_generator())
402 567
         self.assertEqual(len(out), 2)
403 568
         self.assertEqual(len(out[1]._hunks), 0)
404 569
         self.assertEqual(out[1]._headers, ['Only in foo: foo\n'])
@@ -423,7 +588,7 @@ Binary files a/1.pdf and b/1.pdf differ
423 588
         stream = cdiff.PatchStream(Sequential(items))
424 589
         parser = cdiff.DiffParser(stream)
425 590
 
426
-        out = list(parser._parse())
591
+        out = list(parser.get_diff_generator())
427 592
         self.assertEqual(len(out), 3)
428 593
         self.assertEqual(len(out[1]._hunks), 0)
429 594
         self.assertEqual(out[1]._old_path, '')
@@ -459,7 +624,7 @@ index 529e8a3..ad71921 100755
459 624
         stream = cdiff.PatchStream(Sequential(items))
460 625
         parser = cdiff.DiffParser(stream)
461 626
 
462
-        out = list(parser._parse())
627
+        out = list(parser.get_diff_generator())
463 628
         self.assertEqual(len(out), 3)
464 629
         self.assertEqual(len(out[1]._hunks), 0)
465 630
         self.assertEqual(out[1]._old_path, '')
@@ -484,7 +649,7 @@ Added: svn:keywords
484 649
         items = patch.splitlines(True)
485 650
         stream = cdiff.PatchStream(Sequential(items))
486 651
         parser = cdiff.DiffParser(stream)
487
-        out = list(parser._parse())
652
+        out = list(parser.get_diff_generator())
488 653
         self.assertEqual(len(out), 1)
489 654
         self.assertEqual(len(out[0]._hunks), 2)
490 655