blob: 20e07103b1bfccecfd12aa7b5cb61dce367ab2ba [file] [log] [blame]
#!/usr/bin/env perl
#
# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@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",
},
{
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);
}
}