[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.19-706-ge5415e9
cjerdonek at webkit.org
cjerdonek at webkit.org
Thu Feb 4 21:24:12 UTC 2010
The following commit has been merged in the webkit-1.1 branch:
commit 258326406b2f6b88d241e6d76a48f350296e2da7
Author: cjerdonek at webkit.org <cjerdonek at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Jan 22 02:35:12 2010 +0000
Create a unit-tested subroutine to parse patch files created
by svn-create-patch.
Reviewed by David Kilzer.
https://bugs.webkit.org/show_bug.cgi?id=33475
* Scripts/VCSUtils.pm:
- Added parseDiff().
- Added parsePatch().
* Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl: Added.
- Added unit tests for parseDiff().
* Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- Total number of tests now computed dynamically.
* Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl: Added.
- Added unit tests for parsePatch().
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53667 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
index b7aa46b..ed48a2b 100644
--- a/WebKitTools/ChangeLog
+++ b/WebKitTools/ChangeLog
@@ -1,3 +1,25 @@
+2010-01-21 Chris Jerdonek <cjerdonek at webkit.org>
+
+ Reviewed by David Kilzer.
+
+ Create a unit-tested subroutine to parse patch files created
+ by svn-create-patch.
+
+ https://bugs.webkit.org/show_bug.cgi?id=33475
+
+ * Scripts/VCSUtils.pm:
+ - Added parseDiff().
+ - Added parsePatch().
+
+ * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl: Added.
+ - Added unit tests for parseDiff().
+
+ * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
+ - Total number of tests now computed dynamically.
+
+ * Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl: Added.
+ - Added unit tests for parsePatch().
+
2010-01-21 Kevin Ollivier <kevino at theolliviers.com>
[wx] Build fix, add new directory to dir list.
diff --git a/WebKitTools/Scripts/VCSUtils.pm b/WebKitTools/Scripts/VCSUtils.pm
index 764fdbd..022c72a 100644
--- a/WebKitTools/Scripts/VCSUtils.pm
+++ b/WebKitTools/Scripts/VCSUtils.pm
@@ -62,6 +62,7 @@ BEGIN {
&isSVNVersion16OrNewer
&makeFilePathRelative
&normalizePath
+ &parsePatch
&pathRelativeToSVNRepositoryRootForPath
&runPatchCommand
&svnRevisionForDirectory
@@ -480,6 +481,98 @@ sub parseDiffHeader($$)
return (\%header, $lastReadLine);
}
+# Parse one diff from a patch file created by svn-create-patch, and
+# advance the file handle so the last line read is the first line
+# of the next header block.
+#
+# This subroutine preserves any leading junk encountered before the header.
+#
+# Args:
+# $fileHandle: a file handle advanced to the first line of the next
+# header block. Leading junk is okay.
+# $line: the line last read from $fileHandle.
+#
+# Returns ($diffHashRef, $lastReadLine):
+# $diffHashRef:
+# copiedFromPath: if a file copy, the path from which the file was
+# copied. Otherwise, undefined.
+# indexPath: the path in the "Index:" line.
+# sourceRevision: the revision number of the source. This is the same
+# as the revision number the file was copied from, in
+# the case of a file copy.
+# svnConvertedText: the diff converted to SVN format.
+# $lastReadLine: the line last read from $fileHandle
+sub parseDiff($$)
+{
+ my ($fileHandle, $line) = @_;
+
+ my $headerStartRegEx = qr#^Index: #; # SVN-style header for the default
+ my $gitHeaderStartRegEx = qr#^diff --git \w/#;
+
+ my $headerHashRef; # Last header found, as returned by parseDiffHeader().
+ my $svnText;
+ while (defined($line)) {
+ if (!$headerHashRef && ($line =~ $gitHeaderStartRegEx)) {
+ # Then assume all diffs in the patch are Git-formatted. This
+ # block was made to be enterable at most once since we assume
+ # all diffs in the patch are formatted the same (SVN or Git).
+ $headerStartRegEx = $gitHeaderStartRegEx;
+ }
+
+ if ($line !~ $headerStartRegEx) {
+ # Then we are in the body of the diff.
+ $svnText .= $line;
+ $line = <$fileHandle>;
+ next;
+ } # Otherwise, we found a diff header.
+
+ if ($headerHashRef) {
+ # Then this is the second diff header of this while loop.
+ last;
+ }
+
+ ($headerHashRef, $line) = parseDiffHeader($fileHandle, $line);
+
+ $svnText .= $headerHashRef->{svnConvertedText};
+ }
+
+ my %diffHashRef;
+ $diffHashRef{copiedFromPath} = $headerHashRef->{copiedFromPath};
+ $diffHashRef{indexPath} = $headerHashRef->{indexPath};
+ $diffHashRef{sourceRevision} = $headerHashRef->{sourceRevision};
+ $diffHashRef{svnConvertedText} = $svnText;
+
+ return (\%diffHashRef, $line);
+}
+
+# Parse a patch file created by svn-create-patch.
+#
+# Args:
+# $fileHandle: A file handle to the patch file that has not yet been
+# read from.
+#
+# Returns:
+# @diffHashRefs: an array of diff hash references. See parseDiff() for
+# a description of each $diffHashRef.
+sub parsePatch($)
+{
+ my ($fileHandle) = @_;
+
+ my @diffHashRefs; # return value
+
+ my $line = <$fileHandle>;
+
+ while (defined($line)) { # Otherwise, at EOF.
+
+ my $diffHashRef;
+ ($diffHashRef, $line) = parseDiff($fileHandle, $line);
+
+ push @diffHashRefs, $diffHashRef;
+ }
+
+ return @diffHashRefs;
+}
+
# If possible, returns a ChangeLog patch equivalent to the given one,
# but with the newest ChangeLog entry inserted at the top of the
# file -- i.e. no leading context and all lines starting with "+".
diff --git a/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl b/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl
new file mode 100644
index 0000000..2507d2d
--- /dev/null
+++ b/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl
@@ -0,0 +1,328 @@
+#!/usr/bin/perl -w
+#
+# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek at gmail.com)
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Unit tests of parseDiff().
+
+use strict;
+use warnings;
+
+use Test::More;
+use VCSUtils;
+
+my @diffHashRefKeys = ( # The $diffHashRef keys to check.
+ "copiedFromPath",
+ "indexPath",
+ "sourceRevision",
+ "svnConvertedText",
+);
+
+# The array of test cases.
+my @testCaseHashRefs = (
+{
+ # New test
+ diffName => "SVN: simple",
+ inputText => <<'END',
+Index: Makefile
+===================================================================
+--- Makefile (revision 53052)
++++ Makefile (working copy)
+@@ -1,3 +1,4 @@
++
+ MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+
+ all:
+END
+ # Header keys to check
+ svnConvertedText => <<'END', # Same as input text
+Index: Makefile
+===================================================================
+--- Makefile (revision 53052)
++++ Makefile (working copy)
+@@ -1,3 +1,4 @@
++
+ MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+
+ all:
+END
+ copiedFromPath => undef,
+ indexPath => "Makefile",
+ sourceRevision => "53052",
+ # Other values to check
+ lastReadLine => undef,
+ nextLine => undef,
+},
+{
+ # New test
+ diffName => "SVN: leading junk",
+ inputText => <<'END',
+
+LEADING JUNK
+
+Index: Makefile
+===================================================================
+--- Makefile (revision 53052)
++++ Makefile (working copy)
+@@ -1,3 +1,4 @@
++
+ MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+
+ all:
+END
+ # Header keys to check
+ svnConvertedText => <<'END', # Same as input text
+
+LEADING JUNK
+
+Index: Makefile
+===================================================================
+--- Makefile (revision 53052)
++++ Makefile (working copy)
+@@ -1,3 +1,4 @@
++
+ MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+
+ all:
+END
+ copiedFromPath => undef,
+ indexPath => "Makefile",
+ sourceRevision => "53052",
+ # Other values to check
+ lastReadLine => undef,
+ nextLine => undef,
+},
+{
+ # New test
+ diffName => "SVN: copied file",
+ inputText => <<'END',
+Index: Makefile_new
+===================================================================
+--- Makefile_new (revision 53131) (from Makefile:53131)
++++ Makefile_new (working copy)
+@@ -0,0 +1,1 @@
++MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+END
+ # Header keys to check
+ svnConvertedText => <<'END', # Same as input text
+Index: Makefile_new
+===================================================================
+--- Makefile_new (revision 53131) (from Makefile:53131)
++++ Makefile_new (working copy)
+@@ -0,0 +1,1 @@
++MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+END
+ copiedFromPath => "Makefile",
+ indexPath => "Makefile_new",
+ sourceRevision => "53131",
+ # Other values to check
+ lastReadLine => undef,
+ nextLine => undef,
+},
+{
+ # New test
+ diffName => "SVN: two diffs",
+ inputText => <<'END',
+Index: Makefile
+===================================================================
+--- Makefile (revision 53131)
++++ Makefile (working copy)
+@@ -1,1 +0,0 @@
+-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+Index: Makefile_new
+===================================================================
+--- Makefile_new (revision 53131) (from Makefile:53131)
+END
+ # Header keys to check
+ svnConvertedText => <<'END',
+Index: Makefile
+===================================================================
+--- Makefile (revision 53131)
++++ Makefile (working copy)
+@@ -1,1 +0,0 @@
+-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+END
+ copiedFromPath => undef,
+ indexPath => "Makefile",
+ sourceRevision => "53131",
+ # Other values to check
+ lastReadLine => "Index: Makefile_new\n",
+ nextLine => "===================================================================\n",
+},
+{
+ # New test
+ diffName => "SVN: SVN diff followed by Git diff", # Should not recognize Git start
+ inputText => <<'END',
+Index: Makefile
+===================================================================
+--- Makefile (revision 53131)
++++ Makefile (working copy)
+@@ -1,1 +0,0 @@
+-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+diff --git a/Makefile b/Makefile
+index f5d5e74..3b6aa92 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,1 1,1 @@ public:
+END
+ # Header keys to check
+ svnConvertedText => <<'END', # Same as input text
+Index: Makefile
+===================================================================
+--- Makefile (revision 53131)
++++ Makefile (working copy)
+@@ -1,1 +0,0 @@
+-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+diff --git a/Makefile b/Makefile
+index f5d5e74..3b6aa92 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,1 1,1 @@ public:
+END
+ copiedFromPath => undef,
+ indexPath => "Makefile",
+ sourceRevision => "53131",
+ # Other values to check
+ lastReadLine => undef,
+ nextLine => undef,
+},
+{
+ # New test
+ diffName => "Git: simple",
+ inputText => <<'END',
+diff --git a/Makefile b/Makefile
+index f5d5e74..3b6aa92 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,1 1,1 @@ public:
+END
+ # Header keys to check
+ svnConvertedText => <<'END',
+Index: Makefile
+===================================================================
+--- Makefile
++++ Makefile
+@@ -1,1 1,1 @@ public:
+END
+ copiedFromPath => undef,
+ indexPath => "Makefile",
+ sourceRevision => undef,
+ # Other values to check
+ lastReadLine => undef,
+ nextLine => undef,
+},
+{
+ # New test
+ diffName => "Git: Git diff followed by SVN diff", # Should not recognize SVN start
+ inputText => <<'END',
+diff --git a/Makefile b/Makefile
+index f5d5e74..3b6aa92 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,1 1,1 @@ public:
+Index: Makefile_new
+===================================================================
+--- Makefile_new (revision 53131) (from Makefile:53131)
+END
+ # Header keys to check
+ svnConvertedText => <<'END',
+Index: Makefile
+===================================================================
+--- Makefile
++++ Makefile
+@@ -1,1 1,1 @@ public:
+Index: Makefile_new
+===================================================================
+--- Makefile_new (revision 53131) (from Makefile:53131)
+END
+ copiedFromPath => undef,
+ indexPath => "Makefile",
+ sourceRevision => undef,
+ # Other values to check
+ lastReadLine => undef,
+ nextLine => undef,
+},
+);
+
+# Return the arguments for each assertion per test case.
+#
+# In particular, the number of assertions per test case is the length
+# of the return value of this subroutine on a sample input.
+#
+# Returns @assertionArgsArrayRefs:
+# $assertionArgsArrayRef: A reference to an array of parameters to pass
+# to each call to is(). The parameters are--
+# $got: The value obtained
+# $expected: The expected value
+# $testName: The name of the test
+sub testParseDiffAssertionArgs($)
+{
+ my ($testCaseHashRef) = @_;
+
+ my $fileHandle;
+ open($fileHandle, "<", \$testCaseHashRef->{inputText});
+
+ my $line = <$fileHandle>;
+
+ my ($diffHashRef, $lastReadLine) = VCSUtils::parseDiff($fileHandle, $line);
+
+ my $testNameStart = "parseDiff(): [$testCaseHashRef->{diffName}] ";
+
+ my @assertionArgsArrayRefs; # Return value
+ my @assertionArgs;
+ foreach my $diffHashRefKey (@diffHashRefKeys) {
+ my $testName = "${testNameStart}key=\"$diffHashRefKey\"";
+ @assertionArgs = ($diffHashRef->{$diffHashRefKey}, $testCaseHashRef->{$diffHashRefKey}, $testName);
+ push(@assertionArgsArrayRefs, \@assertionArgs);
+ }
+
+ @assertionArgs = ($lastReadLine, $testCaseHashRef->{lastReadLine}, "${testNameStart}lastReadLine");
+ push(@assertionArgsArrayRefs, \@assertionArgs);
+
+ my $nextLine = <$fileHandle>;
+ @assertionArgs = ($nextLine, $testCaseHashRef->{nextLine}, "${testNameStart}nextLine");
+ push(@assertionArgsArrayRefs, \@assertionArgs);
+
+ return @assertionArgsArrayRefs;
+}
+
+# Test parseDiff() for the given test case.
+sub testParseDiff($)
+{
+ my ($testCaseHashRef) = @_;
+
+ my @assertionArgsArrayRefs = testParseDiffAssertionArgs($testCaseHashRef);
+
+ foreach my $arrayRef (@assertionArgsArrayRefs) {
+ # The parameters are -- is($got, $expected, $testName).
+ is($arrayRef->[0], $arrayRef->[1], $arrayRef->[2]);
+ }
+}
+
+# Count the number of assertions per test case, using a sample test case.
+my $assertionCount = testParseDiffAssertionArgs($testCaseHashRefs[0]);
+
+plan(tests => @testCaseHashRefs * $assertionCount); # Total number of tests
+
+foreach my $testCaseHashRef (@testCaseHashRefs) {
+ testParseDiff($testCaseHashRef);
+}
diff --git a/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl b/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
index d095dc0..a7a3c26 100644
--- a/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
+++ b/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
@@ -36,40 +36,15 @@ use warnings;
use Test::More;
use VCSUtils;
-my @headerKeys = ( # The $headerHashRef keys to check.
+my @diffHeaderHashRefKeys = ( # The $diffHeaderHashRef keys to check.
"copiedFromPath",
"indexPath",
"sourceRevision",
"svnConvertedText",
);
-# Test parseDiffHeader() for the given $diffTestHashRef.
-sub doDiffTest($)
-{
- my ($diffTestHashRef) = @_;
-
- my $fileHandle;
- open($fileHandle, "<", \$diffTestHashRef->{inputText});
-
- my $line = <$fileHandle>;
-
- my ($headerHashRef, $lastReadLine) = VCSUtils::parseDiffHeader($fileHandle, $line);
-
- my $titleHeader = "parseDiffHeader(): [$diffTestHashRef->{diffName}] ";
- my $title;
-
- foreach my $headerKey (@headerKeys) {
- my $title = "${titleHeader}key=\"$headerKey\"";
- is($headerHashRef->{$headerKey}, $diffTestHashRef->{$headerKey}, $title);
- }
-
- is($lastReadLine, $diffTestHashRef->{lastReadLine}, "${titleHeader}lastReadLine");
-
- my $nextLine = <$fileHandle>;
- is($nextLine, $diffTestHashRef->{nextLine}, "${titleHeader}nextLine");
-}
-
-my @diffTests = (
+# The array of test cases.
+my @testCaseHashRefs = (
{
# New test
diffName => "SVN: simple",
@@ -247,8 +222,67 @@ END
},
);
-plan(tests => @diffTests * 6); # Multiply by number of assertions per call to doDiffTest().
+# Return the arguments for each assertion per test case.
+#
+# In particular, the number of assertions per test case is the length
+# of the return value of this subroutine on a sample input.
+#
+# Returns @assertionArgsArrayRefs:
+# $assertionArgsArrayRef: A reference to an array of parameters to pass
+# to each call to is(). The parameters are--
+# $got: The value obtained
+# $expected: The expected value
+# $testName: The name of the test
+sub testParseDiffHeaderAssertionArgs($)
+{
+ my ($testCaseHashRef) = @_;
+
+ my $fileHandle;
+ open($fileHandle, "<", \$testCaseHashRef->{inputText});
+
+ my $line = <$fileHandle>;
+
+ my ($headerHashRef, $lastReadLine) = VCSUtils::parseDiffHeader($fileHandle, $line);
+
+ my $testNameStart = "parseDiffHeader(): [$testCaseHashRef->{diffName}] ";
+
+ my @assertionArgsArrayRefs; # Return value
+ my @assertionArgs;
+ foreach my $diffHeaderHashRefKey (@diffHeaderHashRefKeys) {
+ my $testName = "${testNameStart}key=\"$diffHeaderHashRefKey\"";
+ @assertionArgs = ($headerHashRef->{$diffHeaderHashRefKey}, $testCaseHashRef->{$diffHeaderHashRefKey}, $testName);
+ push(@assertionArgsArrayRefs, \@assertionArgs);
+ }
+
+ @assertionArgs = ($lastReadLine, $testCaseHashRef->{lastReadLine}, "${testNameStart}lastReadLine");
+ push(@assertionArgsArrayRefs, \@assertionArgs);
+
+ my $nextLine = <$fileHandle>;
+ @assertionArgs = ($nextLine, $testCaseHashRef->{nextLine}, "${testNameStart}nextLine");
+ push(@assertionArgsArrayRefs, \@assertionArgs);
+
+ return @assertionArgsArrayRefs;
+}
+
+# Test parseDiffHeader() for the given test case.
+sub testParseDiffHeader($)
+{
+ my ($testCaseHashRef) = @_;
+
+ my @assertionArgsArrayRefs = testParseDiffHeaderAssertionArgs($testCaseHashRef);
+
+ foreach my $arrayRef (@assertionArgsArrayRefs) {
+ # The parameters are -- is($got, $expected, $testName).
+ is($arrayRef->[0], $arrayRef->[1], $arrayRef->[2]);
+ }
+}
+
+# Count the number of assertions per test case to calculate the total number
+# of Test::More tests. We could have used any test case for the count.
+my $assertionCount = testParseDiffHeaderAssertionArgs($testCaseHashRefs[0]);
+
+plan(tests => @testCaseHashRefs * $assertionCount); # Total number of tests
-foreach my $diffTestHashRef (@diffTests) {
- doDiffTest($diffTestHashRef);
+foreach my $testCaseHashRef (@testCaseHashRefs) {
+ testParseDiffHeader($testCaseHashRef);
}
diff --git a/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl b/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl
new file mode 100644
index 0000000..e6f82ca
--- /dev/null
+++ b/WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl
@@ -0,0 +1,102 @@
+#!/usr/bin/perl -w
+#
+# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek at gmail.com)
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Unit tests of parseDiffHeader().
+
+use strict;
+use warnings;
+
+use Test::More;
+use VCSUtils;
+
+my @diffHashRefKeys = ( # The hash reference keys to check per diff.
+ "copiedFromPath",
+ "indexPath",
+ "sourceRevision",
+ "svnConvertedText",
+);
+
+# New test
+my $testNameStart = "parsePatch(): [SVN: Rename] ";
+my $patch = <<'END',
+Index: Makefile
+===================================================================
+--- Makefile (revision 53131)
++++ Makefile (working copy)
+@@ -1,1 +0,0 @@
+-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+Index: Makefile_new
+===================================================================
+--- Makefile_new (revision 53131) (from Makefile:53131)
++++ Makefile_new (working copy)
+@@ -0,0 +1,1 @@
++MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+END
+
+my @expectedDiffHashRefs = (
+{
+ svnConvertedText => <<'END',
+Index: Makefile
+===================================================================
+--- Makefile (revision 53131)
++++ Makefile (working copy)
+@@ -1,1 +0,0 @@
+-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+END
+ copiedFromPath => undef,
+ indexPath => "Makefile",
+ sourceRevision => "53131",
+},
+{
+ svnConvertedText => <<'END',
+Index: Makefile_new
+===================================================================
+--- Makefile_new (revision 53131) (from Makefile:53131)
++++ Makefile_new (working copy)
+@@ -0,0 +1,1 @@
++MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
+END
+ copiedFromPath => "Makefile",
+ indexPath => "Makefile_new",
+ sourceRevision => "53131",
+},
+);
+
+plan(tests => @expectedDiffHashRefs * @diffHashRefKeys);
+
+my $fileHandle;
+open($fileHandle, "<", \$patch);
+
+my @gotDiffHashRefs = parsePatch($fileHandle);
+
+my $i = 0;
+foreach my $expectedDiffHashRef (@expectedDiffHashRefs) {
+
+ my $gotDiffHashRef = $gotDiffHashRefs[$i++];
+
+ foreach my $diffHashRefKey (@diffHashRefKeys) {
+ my $testName = "${testNameStart}[diff $i] key=\"$diffHashRefKey\"";
+ is($gotDiffHashRef->{$diffHashRefKey}, $expectedDiffHashRef->{$diffHashRefKey}, $testName);
+ }
+}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list