summaryrefslogtreecommitdiff
path: root/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl')
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl72
1 files changed, 72 insertions, 0 deletions
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl
new file mode 100644
index 000000000..bad90805b
--- /dev/null
+++ b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w
+#
+# Copyright (C) 2011 Google Inc. All rights reserved.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 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
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; see the file COPYING.LIB. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# This script tests the parser of prepare-ChangeLog (i.e. get_function_line_ranges_for_XXXX()).
+# This script runs the unittests specified in @testFiles.
+
+use strict;
+use warnings;
+
+use Data::Dumper;
+use File::Basename;
+use File::Spec;
+use FindBin;
+use Getopt::Long;
+use Test::More;
+use lib File::Spec->catdir($FindBin::Bin, "..");
+use LoadAsModule qw(PrepareChangeLog prepare-ChangeLog);
+
+my %testFiles = ("perl_unittests.pl" => "perl",
+ "python_unittests.py" => "python",
+ "java_unittests.java" => "java",
+ "cpp_unittests.cpp" => "cpp");
+
+my $resetResults;
+GetOptions('reset-results' => \$resetResults);
+
+my @testSet;
+foreach my $testFile (sort keys %testFiles) {
+ my $basename = $testFile;
+ $basename = $1 if $basename =~ /^(.*)\.[^\.]*$/;
+ push @testSet, {language => $testFiles{$testFile},
+ inputFile => File::Spec->catdir($FindBin::Bin, "resources", $testFile),
+ expectedFile => File::Spec->catdir($FindBin::Bin, "resources", $basename . "-expected.txt")};
+}
+
+plan(tests => scalar @testSet);
+foreach my $test (@testSet) {
+ open FH, "< $test->{inputFile}" or die "Cannot open $test->{inputFile}: $!";
+ my $parser = eval "\\&PrepareChangeLog::get_function_line_ranges_for_$test->{language}";
+ my @actualOutput = $parser->(\*FH, $test->{inputFile});;
+ close FH;
+
+ if ($resetResults) {
+ open FH, "> $test->{expectedFile}" or die "Cannot open $test->{expectedFile}: $!";
+ print FH Data::Dumper->new([\@actualOutput])->Terse(1)->Indent(1)->Dump();
+ close FH;
+ next;
+ }
+
+ open FH, "< $test->{expectedFile}" or die "Cannot open $test->{expectedFile}: $!";
+ local $/ = undef;
+ my $expectedOutput = eval <FH>;
+ close FH;
+
+ is_deeply(\@actualOutput, $expectedOutput, "Tests $test->{inputFile}");
+}