[BlackBerry] Cleanup FatFingers.cpp
[WebKit-https.git] / Tools / Scripts / webkitperl / VCSUtils_unittest / parseSvnDiffHeader.pl
1 #!/usr/bin/perl -w
2 #
3 # Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are
7 # met:
8 #
9 #     * Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 #     * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following disclaimer
13 # in the documentation and/or other materials provided with the
14 # distribution.
15 #     * Neither the name of Apple Computer, Inc. ("Apple") nor the names of
16 # its contributors may be used to endorse or promote products derived
17 # from this software without specific prior written permission.
18 #
19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 # Unit tests of parseSvnDiffHeader().
32
33 use strict;
34 use warnings;
35
36 use Test::More;
37 use VCSUtils;
38
39 # The array of test cases.
40 my @testCaseHashRefs = (
41 {
42     # New test
43     diffName => "simple diff",
44     inputText => <<'END',
45 Index: WebKitTools/Scripts/VCSUtils.pm
46 ===================================================================
47 --- WebKitTools/Scripts/VCSUtils.pm     (revision 53004)
48 +++ WebKitTools/Scripts/VCSUtils.pm     (working copy)
49 @@ -32,6 +32,7 @@ use strict;
50  use warnings;
51 END
52     expectedReturn => [
53 {
54     svnConvertedText => <<'END',
55 Index: WebKitTools/Scripts/VCSUtils.pm
56 ===================================================================
57 --- WebKitTools/Scripts/VCSUtils.pm     (revision 53004)
58 +++ WebKitTools/Scripts/VCSUtils.pm     (working copy)
59 END
60     indexPath => "WebKitTools/Scripts/VCSUtils.pm",
61     sourceRevision => "53004",
62 },
63 "@@ -32,6 +32,7 @@ use strict;\n"],
64     expectedNextLine => " use warnings;\n",
65 },
66 {
67     # New test
68     diffName => "new file",
69     inputText => <<'END',
70 Index: WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
71 ===================================================================
72 --- WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0)
73 +++ WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0)
74 @@ -0,0 +1,262 @@
75 +#!/usr/bin/perl -w
76 END
77     expectedReturn => [
78 {
79     svnConvertedText => <<'END',
80 Index: WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
81 ===================================================================
82 --- WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0)
83 +++ WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0)
84 END
85     indexPath => "WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl",
86     isNew => 1,
87 },
88 "@@ -0,0 +1,262 @@\n"],
89     expectedNextLine => "+#!/usr/bin/perl -w\n",
90 },
91 {
92     # New test
93     diffName => "new file with spaces in its name",
94     inputText => <<'END',
95 Index: WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme
96 ===================================================================
97 --- WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme   (revision 0)
98 +++ WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme   (revision 0)
99 @@ -0,0 +1,8 @@
100 +<?xml version="1.0" encoding="UTF-8"?>
101 END
102     expectedReturn => [
103 {
104     svnConvertedText => <<'END',
105 Index: WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme
106 ===================================================================
107 --- WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme   (revision 0)
108 +++ WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme   (revision 0)
109 END
110     indexPath => "WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme",
111     isNew => 1,
112 },
113 "@@ -0,0 +1,8 @@\n"],
114     expectedNextLine => "+<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
115 },
116 {
117     # New test
118     diffName => "copied file",
119     inputText => <<'END',
120 Index: index_path.py
121 ===================================================================
122 --- index_path.py       (revision 53048)        (from copied_from_path.py:53048)
123 +++ index_path.py       (working copy)
124 @@ -0,0 +1,7 @@
125 +# Python file...
126 END
127     expectedReturn => [
128 {
129     svnConvertedText => <<'END',
130 Index: index_path.py
131 ===================================================================
132 --- index_path.py       (revision 53048)        (from copied_from_path.py:53048)
133 +++ index_path.py       (working copy)
134 END
135     copiedFromPath => "copied_from_path.py",
136     indexPath => "index_path.py",
137     sourceRevision => 53048,
138 },
139 "@@ -0,0 +1,7 @@\n"],
140     expectedNextLine => "+# Python file...\n",
141 },
142 {
143     # New test
144     diffName => "contains \\r\\n lines",
145     inputText => <<END, # No single quotes to allow interpolation of "\r"
146 Index: index_path.py\r
147 ===================================================================\r
148 --- index_path.py       (revision 53048)\r
149 +++ index_path.py       (working copy)\r
150 @@ -0,0 +1,7 @@\r
151 +# Python file...\r
152 END
153     expectedReturn => [
154 {
155     svnConvertedText => <<END, # No single quotes to allow interpolation of "\r"
156 Index: index_path.py\r
157 ===================================================================\r
158 --- index_path.py       (revision 53048)\r
159 +++ index_path.py       (working copy)\r
160 END
161     indexPath => "index_path.py",
162     sourceRevision => 53048,
163 },
164 "@@ -0,0 +1,7 @@\r\n"],
165     expectedNextLine => "+# Python file...\r\n",
166 },
167 {
168     # New test
169     diffName => "contains path corrections",
170     inputText => <<'END',
171 Index: index_path.py
172 ===================================================================
173 --- bad_path    (revision 53048)        (from copied_from_path.py:53048)
174 +++ bad_path    (working copy)
175 @@ -0,0 +1,7 @@
176 +# Python file...
177 END
178     expectedReturn => [
179 {
180     svnConvertedText => <<'END',
181 Index: index_path.py
182 ===================================================================
183 --- index_path.py       (revision 53048)        (from copied_from_path.py:53048)
184 +++ index_path.py       (working copy)
185 END
186     copiedFromPath => "copied_from_path.py",
187     indexPath => "index_path.py",
188     sourceRevision => 53048,
189 },
190 "@@ -0,0 +1,7 @@\n"],
191     expectedNextLine => "+# Python file...\n",
192 },
193 ####
194 #    Binary test cases
195 ##
196 {
197     # New test
198     diffName => "binary file",
199     inputText => <<'END',
200 Index: test_file.swf
201 ===================================================================
202 Cannot display: file marked as a binary type.
203 svn:mime-type = application/octet-stream
204
205 Property changes on: test_file.swf
206 ___________________________________________________________________
207 Name: svn:mime-type
208    + application/octet-stream
209
210
211 Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
212 END
213     expectedReturn => [
214 {
215     svnConvertedText => <<'END',
216 Index: test_file.swf
217 ===================================================================
218 Cannot display: file marked as a binary type.
219 END
220     indexPath => "test_file.swf",
221     isBinary => 1,
222 },
223 "svn:mime-type = application/octet-stream\n"],
224     expectedNextLine => "\n",
225 },
226 );
227
228 my $testCasesCount = @testCaseHashRefs;
229 plan(tests => 2 * $testCasesCount); # Total number of assertions.
230
231 foreach my $testCase (@testCaseHashRefs) {
232     my $testNameStart = "parseSvnDiffHeader(): $testCase->{diffName}: comparing";
233
234     my $fileHandle;
235     open($fileHandle, "<", \$testCase->{inputText});
236     my $line = <$fileHandle>;
237
238     my @got = VCSUtils::parseSvnDiffHeader($fileHandle, $line);
239     my $expectedReturn = $testCase->{expectedReturn};
240
241     is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
242
243     my $gotNextLine = <$fileHandle>;
244     is($gotNextLine, $testCase->{expectedNextLine},  "$testNameStart next read line.");
245 }