Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Side by Side Diff: Tools/Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl

Issue 1253013003: Remove all perl scripts from Tools/Scripts (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove the python code to invoke Perl \o/ Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/perl -w
2 #
3 # Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 # 1. Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 # 2. Redistributions in binary form must reproduce the above copyright
11 # notice, this list of conditions and the following disclaimer in the
12 # documentation and/or other materials provided with the distribution.
13 #
14 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
15 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
18 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
25 # Unit tests of parseGitDiffHeader().
26
27 use strict;
28 use warnings;
29
30 use Test::More;
31 use VCSUtils;
32
33 # The array of test cases.
34 my @testCaseHashRefs = (
35 { # New test
36 diffName => "Modified file",
37 inputText => <<'END',
38 diff --git a/foo.h b/foo.h
39 index f5d5e74..3b6aa92 100644
40 --- a/foo.h
41 +++ b/foo.h
42 @@ -1 +1 @@
43 -file contents
44 +new file contents
45 END
46 expectedReturn => [
47 {
48 svnConvertedText => <<'END',
49 Index: foo.h
50 index f5d5e74..3b6aa92 100644
51 --- foo.h
52 +++ foo.h
53 END
54 indexPath => "foo.h",
55 },
56 "@@ -1 +1 @@\n"],
57 expectedNextLine => "-file contents\n",
58 },
59 { # New test
60 diffName => "new file",
61 inputText => <<'END',
62 diff --git a/foo.h b/foo.h
63 new file mode 100644
64 index 0000000..3c9f114
65 --- /dev/null
66 +++ b/foo.h
67 @@ -0,0 +1,34 @@
68 +<html>
69 END
70 expectedReturn => [
71 {
72 svnConvertedText => <<'END',
73 Index: foo.h
74 new file mode 100644
75 index 0000000..3c9f114
76 --- foo.h
77 +++ foo.h
78 END
79 indexPath => "foo.h",
80 isNew => 1,
81 },
82 "@@ -0,0 +1,34 @@\n"],
83 expectedNextLine => "+<html>\n",
84 },
85 { # New test
86 diffName => "file deletion",
87 inputText => <<'END',
88 diff --git a/foo b/foo
89 deleted file mode 100644
90 index 1e50d1d..0000000
91 --- a/foo
92 +++ /dev/null
93 @@ -1,1 +0,0 @@
94 -line1
95 diff --git a/configure.ac b/configure.ac
96 index d45dd40..3494526 100644
97 END
98 expectedReturn => [
99 {
100 svnConvertedText => <<'END',
101 Index: foo
102 deleted file mode 100644
103 index 1e50d1d..0000000
104 --- foo
105 +++ foo
106 END
107 indexPath => "foo",
108 isDeletion => 1,
109 },
110 "@@ -1,1 +0,0 @@\n"],
111 expectedNextLine => "-line1\n",
112 },
113 { # New test
114 diffName => "using --no-prefix",
115 inputText => <<'END',
116 diff --git foo.h foo.h
117 index c925780..9e65c43 100644
118 --- foo.h
119 +++ foo.h
120 @@ -1,3 +1,17 @@
121 +contents
122 END
123 expectedReturn => [
124 {
125 svnConvertedText => <<'END',
126 Index: foo.h
127 index c925780..9e65c43 100644
128 --- foo.h
129 +++ foo.h
130 END
131 indexPath => "foo.h",
132 },
133 "@@ -1,3 +1,17 @@\n"],
134 expectedNextLine => "+contents\n",
135 },
136 ####
137 # Copy operations
138 ##
139 { # New test
140 diffName => "copy (with similarity index 100%)",
141 inputText => <<'END',
142 diff --git a/foo b/foo_new
143 similarity index 100%
144 copy from foo
145 copy to foo_new
146 diff --git a/bar b/bar
147 index d45dd40..3494526 100644
148 END
149 expectedReturn => [
150 {
151 svnConvertedText => <<'END',
152 Index: foo_new
153 similarity index 100%
154 copy from foo
155 copy to foo_new
156 END
157 copiedFromPath => "foo",
158 indexPath => "foo_new",
159 },
160 "diff --git a/bar b/bar\n"],
161 expectedNextLine => "index d45dd40..3494526 100644\n",
162 },
163 { # New test
164 diffName => "copy (with similarity index < 100%)",
165 inputText => <<'END',
166 diff --git a/foo b/foo_new
167 similarity index 99%
168 copy from foo
169 copy to foo_new
170 diff --git a/bar b/bar
171 index d45dd40..3494526 100644
172 END
173 expectedReturn => [
174 {
175 svnConvertedText => <<'END',
176 Index: foo_new
177 similarity index 99%
178 copy from foo
179 copy to foo_new
180 END
181 copiedFromPath => "foo",
182 indexPath => "foo_new",
183 isCopyWithChanges => 1,
184 },
185 "diff --git a/bar b/bar\n"],
186 expectedNextLine => "index d45dd40..3494526 100644\n",
187 },
188 { # New test
189 diffName => "rename (with similarity index 100%)",
190 inputText => <<'END',
191 diff --git a/foo b/foo_new
192 similarity index 100%
193 rename from foo
194 rename to foo_new
195 diff --git a/bar b/bar
196 index d45dd40..3494526 100644
197 END
198 expectedReturn => [
199 {
200 svnConvertedText => <<'END',
201 Index: foo_new
202 similarity index 100%
203 rename from foo
204 rename to foo_new
205 END
206 copiedFromPath => "foo",
207 indexPath => "foo_new",
208 shouldDeleteSource => 1,
209 },
210 "diff --git a/bar b/bar\n"],
211 expectedNextLine => "index d45dd40..3494526 100644\n",
212 },
213 { # New test
214 diffName => "rename (with similarity index < 100%)",
215 inputText => <<'END',
216 diff --git a/foo b/foo_new
217 similarity index 99%
218 rename from foo
219 rename to foo_new
220 index 1e50d1d..1459d21 100644
221 --- a/foo
222 +++ b/foo_new
223 @@ -15,3 +15,4 @@ release r deployment dep deploy:
224 line1
225 line2
226 line3
227 +line4
228 diff --git a/bar b/bar
229 index d45dd40..3494526 100644
230 END
231 expectedReturn => [
232 {
233 svnConvertedText => <<'END',
234 Index: foo_new
235 similarity index 99%
236 rename from foo
237 rename to foo_new
238 index 1e50d1d..1459d21 100644
239 --- foo_new
240 +++ foo_new
241 END
242 copiedFromPath => "foo",
243 indexPath => "foo_new",
244 isCopyWithChanges => 1,
245 shouldDeleteSource => 1,
246 },
247 "@@ -15,3 +15,4 @@ release r deployment dep deploy:\n"],
248 expectedNextLine => " line1\n",
249 },
250 { # New test
251 diffName => "rename (with executable bit change)",
252 inputText => <<'END',
253 diff --git a/foo b/foo_new
254 old mode 100644
255 new mode 100755
256 similarity index 100%
257 rename from foo
258 rename to foo_new
259 diff --git a/bar b/bar
260 index d45dd40..3494526 100644
261 END
262 expectedReturn => [
263 {
264 svnConvertedText => <<'END',
265 Index: foo_new
266 old mode 100644
267 new mode 100755
268 similarity index 100%
269 rename from foo
270 rename to foo_new
271 END
272 copiedFromPath => "foo",
273 executableBitDelta => 1,
274 indexPath => "foo_new",
275 isCopyWithChanges => 1,
276 shouldDeleteSource => 1,
277 },
278 "diff --git a/bar b/bar\n"],
279 expectedNextLine => "index d45dd40..3494526 100644\n",
280 },
281 ####
282 # Binary file test cases
283 ##
284 {
285 # New test case
286 diffName => "New binary file",
287 inputText => <<'END',
288 diff --git a/foo.gif b/foo.gif
289 new file mode 100644
290 index 0000000000000000000000000000000000000000..64a9532e7794fcd791f6f12157406d90 60151690
291 GIT binary patch
292 literal 7
293 OcmYex&reDa;sO8*F9L)B
294
295 literal 0
296 HcmV?d00001
297
298 END
299 expectedReturn => [
300 {
301 svnConvertedText => <<'END',
302 Index: foo.gif
303 new file mode 100644
304 index 0000000000000000000000000000000000000000..64a9532e7794fcd791f6f12157406d90 60151690
305 GIT binary patch
306 END
307 indexPath => "foo.gif",
308 isBinary => 1,
309 isNew => 1,
310 },
311 "literal 7\n"],
312 expectedNextLine => "OcmYex&reDa;sO8*F9L)B\n",
313 },
314 {
315 # New test case
316 diffName => "Deleted binary file",
317 inputText => <<'END',
318 diff --git a/foo.gif b/foo.gif
319 deleted file mode 100644
320 index 323fae0..0000000
321 GIT binary patch
322 literal 0
323 HcmV?d00001
324
325 literal 7
326 OcmYex&reDa;sO8*F9L)B
327
328 END
329 expectedReturn => [
330 {
331 svnConvertedText => <<'END',
332 Index: foo.gif
333 deleted file mode 100644
334 index 323fae0..0000000
335 GIT binary patch
336 END
337 indexPath => "foo.gif",
338 isBinary => 1,
339 isDeletion => 1,
340 },
341 "literal 0\n"],
342 expectedNextLine => "HcmV?d00001\n",
343 },
344 ####
345 # Executable bit test cases
346 ##
347 {
348 # New test case
349 diffName => "Modified executable file",
350 inputText => <<'END',
351 diff --git a/foo b/foo
352 index d03e242..435ad3a 100755
353 --- a/foo
354 +++ b/foo
355 @@ -1 +1 @@
356 -file contents
357 +new file contents
358
359 END
360 expectedReturn => [
361 {
362 svnConvertedText => <<'END',
363 Index: foo
364 index d03e242..435ad3a 100755
365 --- foo
366 +++ foo
367 END
368 indexPath => "foo",
369 },
370 "@@ -1 +1 @@\n"],
371 expectedNextLine => "-file contents\n",
372 },
373 {
374 # New test case
375 diffName => "Making file executable (last diff)",
376 inputText => <<'END',
377 diff --git a/foo.exe b/foo.exe
378 old mode 100644
379 new mode 100755
380 END
381 expectedReturn => [
382 {
383 svnConvertedText => <<'END',
384 Index: foo.exe
385 old mode 100644
386 new mode 100755
387 END
388 executableBitDelta => 1,
389 indexPath => "foo.exe",
390 },
391 undef],
392 expectedNextLine => undef,
393 },
394 {
395 # New test case
396 diffName => "Making file executable (not last diff)",
397 inputText => <<'END',
398 diff --git a/foo.exe b/foo.exe
399 old mode 100644
400 new mode 100755
401 diff --git a/another_file.txt b/another_file.txt
402 index d03e242..435ad3a 100755
403 END
404 expectedReturn => [
405 {
406 svnConvertedText => <<'END',
407 Index: foo.exe
408 old mode 100644
409 new mode 100755
410 END
411 executableBitDelta => 1,
412 indexPath => "foo.exe",
413 },
414 "diff --git a/another_file.txt b/another_file.txt\n"],
415 expectedNextLine => "index d03e242..435ad3a 100755\n",
416 },
417 {
418 # New test case
419 diffName => "New executable file",
420 inputText => <<'END',
421 diff --git a/foo b/foo
422 new file mode 100755
423 index 0000000..d03e242
424 --- /dev/null
425 +++ b/foo
426 @@ -0,0 +1 @@
427 +file contents
428
429 END
430 expectedReturn => [
431 {
432 svnConvertedText => <<'END',
433 Index: foo
434 new file mode 100755
435 index 0000000..d03e242
436 --- foo
437 +++ foo
438 END
439 executableBitDelta => 1,
440 indexPath => "foo",
441 isNew => 1,
442 },
443 "@@ -0,0 +1 @@\n"],
444 expectedNextLine => "+file contents\n",
445 },
446 {
447 # New test case
448 diffName => "Deleted executable file",
449 inputText => <<'END',
450 diff --git a/foo b/foo
451 deleted file mode 100755
452 index d03e242..0000000
453 --- a/foo
454 +++ /dev/null
455 @@ -1 +0,0 @@
456 -file contents
457
458 END
459 expectedReturn => [
460 {
461 svnConvertedText => <<'END',
462 Index: foo
463 deleted file mode 100755
464 index d03e242..0000000
465 --- foo
466 +++ foo
467 END
468 executableBitDelta => -1,
469 indexPath => "foo",
470 isDeletion => 1,
471 },
472 "@@ -1 +0,0 @@\n"],
473 expectedNextLine => "-file contents\n",
474 },
475 );
476
477 my $testCasesCount = @testCaseHashRefs;
478 plan(tests => 2 * $testCasesCount); # Total number of assertions.
479
480 foreach my $testCase (@testCaseHashRefs) {
481 my $testNameStart = "parseGitDiffHeader(): $testCase->{diffName}: comparing" ;
482
483 my $fileHandle;
484 open($fileHandle, "<", \$testCase->{inputText});
485 my $line = <$fileHandle>;
486
487 my @got = VCSUtils::parseGitDiffHeader($fileHandle, $line);
488 my $expectedReturn = $testCase->{expectedReturn};
489
490 is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
491
492 my $gotNextLine = <$fileHandle>;
493 is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read l ine.");
494 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698