diff options
| author | Ben Murdoch <benm@google.com> | 2011-06-02 12:07:03 +0100 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2011-06-10 10:47:21 +0100 |
| commit | 2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 (patch) | |
| tree | e4964fbd1cb70599f7718ff03e50ea1dab33890b /Tools/Scripts/webkitperl/VCSUtils_unittest | |
| parent | 87bdf0060a247bfbe668342b87e0874182e0ffa9 (diff) | |
| download | external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.zip external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.gz external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.bz2 | |
Merge WebKit at r84325: Initial merge by git.
Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b
Diffstat (limited to 'Tools/Scripts/webkitperl/VCSUtils_unittest')
4 files changed, 374 insertions, 6 deletions
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl index 9fe077f..e195023 100644 --- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl +++ b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl @@ -1198,7 +1198,7 @@ foreach my $testCase (@testCaseHashRefs) { open($fileHandle, "<", \$testCase->{inputText}); my $line = <$fileHandle>; - my @got = VCSUtils::parseDiff($fileHandle, $line); + my @got = VCSUtils::parseDiff($fileHandle, $line, {"shouldNotUseIndexPathEOL" => 1}); my $expectedReturn = $testCase->{expectedReturn}; is_deeply(\@got, $expectedReturn, "$testNameStart return value."); diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl new file mode 100644 index 0000000..307f3a7 --- /dev/null +++ b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl @@ -0,0 +1,305 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2011 Research In Motion Limited. All rights reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# Unit tests of parseDiff() with mock files; test override of patch EOL with EOL of target file. + +use strict; +use warnings; + +use File::Temp; +use POSIX qw/getcwd/; +use Test::More; +use VCSUtils; + +my $gitDiffHeaderForNewFile = <<EOF; +diff --git a/Makefile b/Makefile +new file mode 100644 +index 0000000..756e864 +--- /dev/null ++++ b/Makefile +@@ -0,0 +1,17 @@ +EOF + +my $gitDiffHeader = <<EOF; +diff --git a/Makefile b/Makefile +index 756e864..04d2ae1 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,3 +1,4 @@ +EOF + +my $svnConvertedGitDiffHeader = <<EOF; +Index: Makefile +index 756e864..04d2ae1 100644 +--- Makefile ++++ Makefile +@@ -1,3 +1,4 @@ +EOF + +my $svnConvertedGitDiffHeaderForNewFile = <<EOF; +Index: Makefile +new file mode 100644 +index 0000000..756e864 +--- Makefile ++++ Makefile +@@ -0,0 +1,17 @@ +EOF + +my $svnDiffHeaderForNewFile = <<EOF; +Index: Makefile +=================================================================== +--- Makefile (revision 0) ++++ Makefile (revision 0) +@@ -0,0 +1,17 @@ +EOF + +my $svnDiffHeader = <<EOF; +Index: Makefile +=================================================================== +--- Makefile (revision 53052) ++++ Makefile (working copy) +@@ -1,3 +1,4 @@ +EOF + +my $diffBody = <<EOF; ++ + MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools + + all: +EOF + +my $MakefileContents = <<EOF; +MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools + +all: +EOF + +my $mockDir = File::Temp->tempdir("parseDiffXXXX", CLEANUP => 1); +writeToFile(File::Spec->catfile($mockDir, "MakefileWithUnixEOL"), $MakefileContents); +writeToFile(File::Spec->catfile($mockDir, "MakefileWithWindowsEOL"), toWindowsLineEndings($MakefileContents)); + +# The array of test cases. +my @testCaseHashRefs = ( +### +# SVN test cases +## +{ + # New test + diffName => "SVN: Patch with Unix line endings and IndexPath has Unix line endings", + inputText => substituteString($svnDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody, + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody, # Same as input text + indexPath => "MakefileWithUnixEOL", + isSvn => 1, + sourceRevision => "53052", +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "SVN: Patch with Windows line endings and IndexPath has Unix line endings", + inputText => substituteString($svnDiffHeader, "Makefile", "MakefileWithUnixEOL") . toWindowsLineEndings($diffBody), + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody, + indexPath => "MakefileWithUnixEOL", + isSvn => 1, + sourceRevision => "53052", +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "SVN: Patch with Windows line endings and IndexPath has Windows line endings", + inputText => substituteString($svnDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody), + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody), # Same as input text + indexPath => "MakefileWithWindowsEOL", + isSvn => 1, + sourceRevision => "53052", +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "SVN: Patch with Unix line endings and IndexPath has Windows line endings", + inputText => substituteString($svnDiffHeader, "Makefile", "MakefileWithWindowsEOL") . $diffBody, + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody), + indexPath => "MakefileWithWindowsEOL", + isSvn => 1, + sourceRevision => "53052", +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "SVN: Patch with Unix line endings and nonexistent IndexPath", + inputText => substituteString($svnDiffHeaderForNewFile, "Makefile", "NonexistentFile") . $diffBody, + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnDiffHeaderForNewFile, "Makefile", "NonexistentFile") . $diffBody, # Same as input text + indexPath => "NonexistentFile", + isSvn => 1, + isNew => 1, +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "SVN: Patch with Windows line endings and nonexistent IndexPath", + inputText => substituteString($svnDiffHeaderForNewFile, "Makefile", "NonexistentFile") . toWindowsLineEndings($diffBody), + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnDiffHeaderForNewFile, "Makefile", "NonexistentFile") . toWindowsLineEndings($diffBody), # Same as input text + indexPath => "NonexistentFile", + isSvn => 1, + isNew => 1, +}], +undef], + expectedNextLine => undef, +}, +### +# Git test cases +## +{ + # New test + diffName => "Git: Patch with Unix line endings and IndexPath has Unix line endings", + inputText => substituteString($gitDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody, + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnConvertedGitDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody, # Same as input text + indexPath => "MakefileWithUnixEOL", + isGit => 1, +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "Git: Patch with Windows line endings and IndexPath has Unix line endings", + inputText => substituteString($gitDiffHeader, "Makefile", "MakefileWithUnixEOL") . toWindowsLineEndings($diffBody), + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnConvertedGitDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody, + indexPath => "MakefileWithUnixEOL", + isGit => 1, +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "Git: Patch with Windows line endings and IndexPath has Windows line endings", + inputText => substituteString($gitDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody), + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnConvertedGitDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody), # Same as input text + indexPath => "MakefileWithWindowsEOL", + isGit => 1, +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "Git: Patch with Unix line endings and IndexPath has Windows line endings", + inputText => substituteString($gitDiffHeader, "Makefile", "MakefileWithWindowsEOL") . $diffBody, + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnConvertedGitDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody), + indexPath => "MakefileWithWindowsEOL", + isGit => 1, +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "Git: Patch with Unix line endings and nonexistent IndexPath", + inputText => substituteString($gitDiffHeaderForNewFile, "Makefile", "NonexistentFile") . $diffBody, + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnConvertedGitDiffHeaderForNewFile, "Makefile", "NonexistentFile") . $diffBody, # Same as input text + indexPath => "NonexistentFile", + isGit => 1, + isNew => 1, +}], +undef], + expectedNextLine => undef, +}, +{ + # New test + diffName => "Git: Patch with Windows line endings and nonexistent IndexPath", + inputText => substituteString($gitDiffHeaderForNewFile, "Makefile", "NonexistentFile") . toWindowsLineEndings($diffBody), + expectedReturn => [ +[{ + svnConvertedText => substituteString($svnConvertedGitDiffHeaderForNewFile, "Makefile", "NonexistentFile") . toWindowsLineEndings($diffBody), # Same as input text + indexPath => "NonexistentFile", + isGit => 1, + isNew => 1, +}], +undef], + expectedNextLine => undef, +}, +); + +my $testCasesCount = @testCaseHashRefs; +plan(tests => 2 * $testCasesCount); # Total number of assertions. + +my $savedCWD = getcwd(); +chdir($mockDir) or die; +foreach my $testCase (@testCaseHashRefs) { + my $testNameStart = "parseDiff(): $testCase->{diffName}: comparing"; + + my $fileHandle; + open($fileHandle, "<", \$testCase->{inputText}); + my $line = <$fileHandle>; + + my @got = VCSUtils::parseDiff($fileHandle, $line); + my $expectedReturn = $testCase->{expectedReturn}; + + is_deeply(\@got, $expectedReturn, "$testNameStart return value."); + + my $gotNextLine = <$fileHandle>; + is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line."); +} +chdir($savedCWD); + +sub substituteString +{ + my ($string, $searchString, $replacementString) = @_; + $string =~ s/$searchString/$replacementString/g; + return $string; +} + +sub writeToFile +{ + my ($file, $text) = @_; + open(FILE, ">$file") or die; + print FILE $text; + close(FILE); +} diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl new file mode 100644 index 0000000..367ad1d --- /dev/null +++ b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl @@ -0,0 +1,63 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2011 Research In Motion Limited. All rights reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +# Unit tests of VCSUtils::parseFirstEOL(). + +use strict; +use warnings; + +use Test::Simple tests => 7; +use VCSUtils; + +my $title; + +# New test +$title = "parseFirstEOL: Empty string."; +ok(!defined(firstEOLInString("")), $title); + +# New test +$title = "parseFirstEOL: Line without a line ending character"; +ok(!defined(firstEOLInString("This line doesn't have a line ending character.")), $title); + +# New test +$title = "parseFirstEOL: Line with Windows line ending."; +ok(firstEOLInString("This line ends with a Windows line ending.\r\n") eq "\r\n", $title); + +# New test +$title = "parseFirstEOL: Line with Unix line ending."; +ok(firstEOLInString("This line ends with a Unix line ending.\n") eq "\n", $title); + +# New test +$title = "parseFirstEOL: Line with Mac line ending."; +ok(firstEOLInString("This line ends with a Mac line ending.\r") eq "\r", $title); + +# New test +$title = "parseFirstEOL: Line with Mac line ending followed by line without a line ending."; +ok(firstEOLInString("This line ends with a Mac line ending.\rThis line doesn't have a line ending.") eq "\r", $title); + +# New test +$title = "parseFirstEOL: Line with a mix of line endings."; +ok(firstEOLInString("This line contains a mix of line endings.\r\n\r\n\r\r\n\n\n\n") eq "\r\n", $title); + +sub firstEOLInString +{ + my ($string) = @_; + my $fileHandle; + open($fileHandle, "<", \$string); + return parseFirstEOL($fileHandle); +} diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl index 8bd8e90..6880214 100644 --- a/Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl +++ b/Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl @@ -37,20 +37,20 @@ my $title; # New test $title = "removeEOL: Undefined argument."; -ok(removeEOL(undef) eq ""); +ok(removeEOL(undef) eq "", $title); # New test $title = "removeEOL: Line with Windows line ending."; -ok(removeEOL("This line ends with a Windows line ending.\r\n") eq "This line ends with a Windows line ending."); +ok(removeEOL("This line ends with a Windows line ending.\r\n") eq "This line ends with a Windows line ending.", $title); # New test $title = "removeEOL: Line with Unix line ending."; -ok(removeEOL("This line ends with a Unix line ending.\n") eq "This line ends with a Unix line ending."); +ok(removeEOL("This line ends with a Unix line ending.\n") eq "This line ends with a Unix line ending.", $title); # New test $title = "removeEOL: Line with Mac line ending."; -ok(removeEOL("This line ends with a Mac line ending.\r") eq "This line ends with a Mac line ending."); +ok(removeEOL("This line ends with a Mac line ending.\r") eq "This line ends with a Mac line ending.", $title); # New test $title = "removeEOL: Line with a mix of line endings."; -ok(removeEOL("This line contains a mix of line endings.\r\n\r\n\r\r\n\n\n\n") eq "This line contains a mix of line endings."); +ok(removeEOL("This line contains a mix of line endings.\r\n\r\n\r\r\n\n\n\n") eq "This line contains a mix of line endings.", $title); |
