Clean up ChunkedUpdateDrawingAreaProxy
[WebKit-https.git] / WebKitTools / Scripts / webkitperl / VCSUtils_unittest / fixChangeLogPatch.pl
1 #!/usr/bin/perl
2 #
3 # Copyright (C) 2009, 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
4 # Copyright (C) Research In Motion 2010. All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are
8 # met:
9
10 #     * Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 #     * Redistributions in binary form must reproduce the above
13 # copyright notice, this list of conditions and the following disclaimer
14 # in the documentation and/or other materials provided with the
15 # distribution.
16 #     * Neither the name of Google Inc. nor the names of its
17 # contributors may be used to endorse or promote products derived from
18 # this software without specific prior written permission.
19
20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
32 # Unit tests of VCSUtils::fixChangeLogPatch().
33
34 use strict;
35 use warnings;
36
37 use Test::More;
38 use VCSUtils;
39
40 # The source ChangeLog for these tests is the following:
41
42 # 2009-12-22  Alice  <alice@email.address>
43
44 #         Reviewed by Ray.
45
46 #         Changed some code on 2009-12-22.
47
48 #         * File:
49 #         * File2:
50
51 # 2009-12-21  Alice  <alice@email.address>
52
53 #         Reviewed by Ray.
54
55 #         Changed some code on 2009-12-21.
56
57 #         * File:
58 #         * File2:
59
60 my @testCaseHashRefs = (
61 { # New test
62     diffName => "fixChangeLogPatch: [no change] In-place change.",
63     inputText => <<'END',
64 --- ChangeLog
65 +++ ChangeLog
66 @@ -1,5 +1,5 @@
67  2010-12-22  Bob  <bob@email.address>
68  
69 -        Reviewed by Sue.
70 +        Reviewed by Ray.
71  
72          Changed some code on 2010-12-22.
73 END
74     expectedReturn => {
75     patch => <<'END',
76 --- ChangeLog
77 +++ ChangeLog
78 @@ -1,5 +1,5 @@
79  2010-12-22  Bob  <bob@email.address>
80  
81 -        Reviewed by Sue.
82 +        Reviewed by Ray.
83  
84          Changed some code on 2010-12-22.
85 END
86     }
87 },
88 { # New test
89     diffName => "fixChangeLogPatch: [no change] Remove first entry.",
90     inputText => <<'END',
91 --- ChangeLog
92 +++ ChangeLog
93 @@ -1,11 +1,3 @@
94 -2010-12-22  Bob  <bob@email.address>
95 -
96 -        Reviewed by Ray.
97 -
98 -        Changed some code on 2010-12-22.
99 -
100 -        * File:
101 -
102  2010-12-22  Alice  <alice@email.address>
103  
104          Reviewed by Ray.
105 END
106     expectedReturn => {
107     patch => <<'END',
108 --- ChangeLog
109 +++ ChangeLog
110 @@ -1,11 +1,3 @@
111 -2010-12-22  Bob  <bob@email.address>
112 -
113 -        Reviewed by Ray.
114 -
115 -        Changed some code on 2010-12-22.
116 -
117 -        * File:
118 -
119  2010-12-22  Alice  <alice@email.address>
120  
121          Reviewed by Ray.
122 END
123     }
124 },
125 { # New test
126     diffName => "fixChangeLogPatch: [no change] Remove entry in the middle.",
127     inputText => <<'END',
128 --- ChangeLog
129 +++ ChangeLog
130 @@@ -7,10 +7,6 @@
131  
132          * File:
133  
134 -2010-12-22  Bob  <bob@email.address>
135 -
136 -        Changed some code on 2010-12-22.
137 -
138  2010-12-22  Alice  <alice@email.address>
139  
140          Reviewed by Ray.
141 END
142     expectedReturn => {
143     patch => <<'END',
144 --- ChangeLog
145 +++ ChangeLog
146 @@@ -7,10 +7,6 @@
147  
148          * File:
149  
150 -2010-12-22  Bob  <bob@email.address>
151 -
152 -        Changed some code on 2010-12-22.
153 -
154  2010-12-22  Alice  <alice@email.address>
155  
156          Reviewed by Ray.
157 END
158     }
159 },
160 { # New test
161     diffName => "fixChangeLogPatch: [no change] Far apart changes (i.e. more than one chunk).",
162     inputText => <<'END',
163 --- ChangeLog
164 +++ ChangeLog
165 @@ -7,7 +7,7 @@
166  
167          * File:
168  
169 -2010-12-22  Bob  <bob@email.address>
170 +2010-12-22  Bobby <bob@email.address>
171  
172          Changed some code on 2010-12-22.
173  
174 @@ -21,7 +21,7 @@
175  
176          * File2:
177  
178 -2010-12-21  Bob  <bob@email.address>
179 +2010-12-21  Bobby <bob@email.address>
180  
181          Changed some code on 2010-12-21.
182 END
183     expectedReturn => {
184     patch => <<'END',
185 --- ChangeLog
186 +++ ChangeLog
187 @@ -7,7 +7,7 @@
188  
189          * File:
190  
191 -2010-12-22  Bob  <bob@email.address>
192 +2010-12-22  Bobby <bob@email.address>
193  
194          Changed some code on 2010-12-22.
195  
196 @@ -21,7 +21,7 @@
197  
198          * File2:
199  
200 -2010-12-21  Bob  <bob@email.address>
201 +2010-12-21  Bobby <bob@email.address>
202  
203          Changed some code on 2010-12-21.
204 END
205     }
206 },
207 { # New test
208     diffName => "fixChangeLogPatch: [no change] First line is new line.",
209     inputText => <<'END',
210 --- ChangeLog
211 +++ ChangeLog
212 @@ -1,3 +1,11 @@
213 +2009-12-22  Bob  <bob@email.address>
214 +
215 +        Reviewed by Ray.
216 +
217 +        Changed some more code on 2009-12-22.
218 +
219 +        * File:
220 +
221  2009-12-22  Alice  <alice@email.address>
222  
223          Reviewed by Ray.
224 END
225     expectedReturn => {
226     patch => <<'END',
227 --- ChangeLog
228 +++ ChangeLog
229 @@ -1,3 +1,11 @@
230 +2009-12-22  Bob  <bob@email.address>
231 +
232 +        Reviewed by Ray.
233 +
234 +        Changed some more code on 2009-12-22.
235 +
236 +        * File:
237 +
238  2009-12-22  Alice  <alice@email.address>
239  
240          Reviewed by Ray.
241 END
242     }
243 },
244 { # New test
245     diffName => "fixChangeLogPatch: [no change] No date string.",
246     inputText => <<'END',
247 --- ChangeLog
248 +++ ChangeLog
249 @@ -6,6 +6,7 @@
250  
251          * File:
252          * File2:
253 +        * File3:
254  
255  2009-12-21  Alice  <alice@email.address>
256  
257 END
258     expectedReturn => {
259     patch => <<'END',
260 --- ChangeLog
261 +++ ChangeLog
262 @@ -6,6 +6,7 @@
263  
264          * File:
265          * File2:
266 +        * File3:
267  
268  2009-12-21  Alice  <alice@email.address>
269  
270 END
271     }
272 },
273 { # New test
274     diffName => "fixChangeLogPatch: [no change] New entry inserted in middle.",
275     inputText => <<'END',
276 --- ChangeLog
277 +++ ChangeLog
278 @@ -11,6 +11,14 @@
279  
280          Reviewed by Ray.
281  
282 +        Changed some more code on 2009-12-21.
283 +
284 +        * File:
285 +
286 +2009-12-21  Alice  <alice@email.address>
287 +
288 +        Reviewed by Ray.
289 +
290          Changed some code on 2009-12-21.
291  
292          * File:
293 END
294     expectedReturn => {
295     hasOverlappingLines => 1,
296     patch => <<'END',
297 --- ChangeLog
298 +++ ChangeLog
299 @@ -11,6 +11,14 @@
300  
301          Reviewed by Ray.
302  
303 +        Changed some more code on 2009-12-21.
304 +
305 +        * File:
306 +
307 +2009-12-21  Alice  <alice@email.address>
308 +
309 +        Reviewed by Ray.
310 +
311          Changed some code on 2009-12-21.
312  
313          * File:
314 END
315     }
316 },
317 { # New test
318     diffName => "fixChangeLogPatch: [no change] New entry inserted earlier in the file, but after an entry with the same author and date.",
319     inputText => <<'END',
320 --- ChangeLog
321 +++ ChangeLog
322 @@ -70,6 +70,14 @@
323  
324  2009-12-22  Alice  <alice@email.address>
325  
326 +        Reviewed by Sue.
327 +
328 +        Changed some more code on 2009-12-22.
329 +
330 +        * File:
331 +
332 +2009-12-22  Alice  <alice@email.address>
333 +
334          Reviewed by Ray.
335  
336          Changed some code on 2009-12-22.
337 END
338     expectedReturn => {
339     hasOverlappingLines => 1,
340     patch => <<'END',
341 --- ChangeLog
342 +++ ChangeLog
343 @@ -70,6 +70,14 @@
344  
345  2009-12-22  Alice  <alice@email.address>
346  
347 +        Reviewed by Sue.
348 +
349 +        Changed some more code on 2009-12-22.
350 +
351 +        * File:
352 +
353 +2009-12-22  Alice  <alice@email.address>
354 +
355          Reviewed by Ray.
356  
357          Changed some code on 2009-12-22.
358 END
359     }
360 },
361 { # New test
362     diffName => "fixChangeLogPatch: Leading context includes first line.",
363     inputText => <<'END',
364 --- ChangeLog
365 +++ ChangeLog
366 @@ -1,5 +1,13 @@
367  2009-12-22  Alice  <alice@email.address>
368  
369 +        Reviewed by Sue.
370 +
371 +        Changed some more code on 2009-12-22.
372 +
373 +        * File:
374 +
375 +2009-12-22  Alice  <alice@email.address>
376 +
377          Reviewed by Ray.
378  
379          Changed some code on 2009-12-22.
380 END
381     expectedReturn => {
382     patch => <<'END',
383 --- ChangeLog
384 +++ ChangeLog
385 @@ -1,3 +1,11 @@
386 +2009-12-22  Alice  <alice@email.address>
387 +
388 +        Reviewed by Sue.
389 +
390 +        Changed some more code on 2009-12-22.
391 +
392 +        * File:
393 +
394  2009-12-22  Alice  <alice@email.address>
395  
396          Reviewed by Ray.
397 END
398     }
399 },
400 { # New test
401     diffName => "fixChangeLogPatch: Leading context does not include first line.",
402     inputText => <<'END',
403 @@ -2,6 +2,14 @@
404  
405          Reviewed by Ray.
406  
407 +        Changed some more code on 2009-12-22.
408 +
409 +        * File:
410 +
411 +2009-12-22  Alice  <alice@email.address>
412 +
413 +        Reviewed by Ray.
414 +
415          Changed some code on 2009-12-22.
416  
417          * File:
418 END
419     expectedReturn => {
420     patch => <<'END',
421 @@ -1,3 +1,11 @@
422 +2009-12-22  Alice  <alice@email.address>
423 +
424 +        Reviewed by Ray.
425 +
426 +        Changed some more code on 2009-12-22.
427 +
428 +        * File:
429 +
430  2009-12-22  Alice  <alice@email.address>
431  
432          Reviewed by Ray.
433 END
434     }
435 },
436 { # New test
437     diffName => "fixChangeLogPatch: Non-consecutive line additions.",
438
439 # This can occur, for example, if the new ChangeLog entry includes
440 # trailing white space in the first blank line but not the second.
441 # A diff command can then match the second blank line of the new
442 # ChangeLog entry with the first blank line of the old.
443 # The svn diff command with the default --diff-cmd has done this.
444     inputText => <<'END',
445 @@ -1,5 +1,11 @@
446  2009-12-22  Alice  <alice@email.address>
447 + <pretend-whitespace>
448 +        Reviewed by Ray.
449  
450 +        Changed some more code on 2009-12-22.
451 +
452 +2009-12-22  Alice  <alice@email.address>
453 +
454          Reviewed by Ray.
455  
456          Changed some code on 2009-12-22.
457 END
458     expectedReturn => {
459     patch => <<'END',
460 @@ -1,3 +1,9 @@
461 +2009-12-22  Alice  <alice@email.address>
462 + <pretend-whitespace>
463 +        Reviewed by Ray.
464 +
465 +        Changed some more code on 2009-12-22.
466 +
467  2009-12-22  Alice  <alice@email.address>
468  
469          Reviewed by Ray.
470 END
471     }
472 },
473 { # New test
474     diffName => "fixChangeLogPatch: Additional edits after new entry.",
475     inputText => <<'END',
476 @@ -2,10 +2,17 @@
477  
478          Reviewed by Ray.
479  
480 +        Changed some more code on 2009-12-22.
481 +
482 +        * File:
483 +
484 +2009-12-22  Alice  <alice@email.address>
485 +
486 +        Reviewed by Ray.
487 +
488          Changed some code on 2009-12-22.
489  
490          * File:
491 -        * File2:
492  
493  2009-12-21  Alice  <alice@email.address>
494  
495 END
496     expectedReturn => {
497     patch => <<'END',
498 @@ -1,11 +1,18 @@
499 +2009-12-22  Alice  <alice@email.address>
500 +
501 +        Reviewed by Ray.
502 +
503 +        Changed some more code on 2009-12-22.
504 +
505 +        * File:
506 +
507  2009-12-22  Alice  <alice@email.address>
508  
509          Reviewed by Ray.
510  
511          Changed some code on 2009-12-22.
512  
513          * File:
514 -        * File2:
515  
516  2009-12-21  Alice  <alice@email.address>
517  
518 END
519     }
520 },
521 );
522
523 my $testCasesCount = @testCaseHashRefs;
524 plan(tests => $testCasesCount); # Total number of assertions.
525
526 foreach my $testCase (@testCaseHashRefs) {
527     my $testNameStart = "fixChangeLogPatch(): $testCase->{diffName}: comparing";
528
529     my $got = VCSUtils::fixChangeLogPatch($testCase->{inputText});
530     my $expectedReturn = $testCase->{expectedReturn};
531  
532     is_deeply($got, $expectedReturn, "$testNameStart return value.");
533 }