diff options
Diffstat (limited to 'Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl')
-rw-r--r-- | Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl deleted file mode 100644 index df29d476e..000000000 --- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl +++ /dev/null @@ -1,131 +0,0 @@ -#!/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 File::Temp qw(tempfile); -use FindBin; -use Getopt::Long; -use Test::More; -use lib File::Spec->catdir($FindBin::Bin, ".."); -use LoadAsModule qw(PrepareChangeLog prepare-ChangeLog); - -sub captureOutput($); -sub convertAbsolutepathToWebKitPath($); - -my %testFiles = ("perl_unittests.pl" => "get_function_line_ranges_for_perl", - "python_unittests.py" => "get_function_line_ranges_for_python", - "java_unittests.java" => "get_function_line_ranges_for_java", - "cpp_unittests.cpp" => "get_function_line_ranges_for_cpp", - "javascript_unittests.js" => "get_function_line_ranges_for_javascript", - "css_unittests.css" => "get_selector_line_ranges_for_css", - "css_unittests_warning.css" => "get_selector_line_ranges_for_css", - ); - -my $resetResults; -GetOptions('reset-results' => \$resetResults); - -my @testSet; -foreach my $testFile (sort keys %testFiles) { - my $basename = $testFile; - $basename = $1 if $basename =~ /^(.*)\.[^\.]*$/; - push @testSet, {method => $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::$test->{method}"; - my @ranges; - my ($stdout, $stderr) = captureOutput(sub { @ranges = $parser->(\*FH, $test->{inputFile}); }); - close FH; - $stdout = convertAbsolutepathToWebKitPath($stdout); - $stderr = convertAbsolutepathToWebKitPath($stderr); - - my %actualOutput = (ranges => \@ranges, stdout => $stdout, stderr => $stderr); - 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}"); -} - -sub captureOutput($) -{ - my ($targetMethod) = @_; - - my ($stdoutFH, $stdoutFileName) = tempfile(); - my ($stderrFH, $stderrFileName) = tempfile(); - - open OLDSTDOUT, ">&", \*STDOUT or die "Cannot dup STDOUT: $!"; - open OLDSTDERR, ">&", \*STDERR or die "Cannot dup STDERR: $!"; - - open STDOUT, ">&", $stdoutFH or die "Cannot redirect STDOUT: $!"; - open STDERR, ">&", $stderrFH or die "Cannot redirect STDERR: $!"; - - &$targetMethod(); - - close STDOUT; - close STDERR; - - open STDOUT, ">&OLDSTDOUT" or die "Cannot dup OLDSTDOUT: $!"; - open STDERR, ">&OLDSTDERR" or die "Cannot dup OLDSTDERR: $!"; - - close OLDSTDOUT; - close OLDSTDERR; - - seek $stdoutFH, 0, 0; - seek $stderrFH, 0, 0; - local $/ = undef; - my $stdout = <$stdoutFH>; - my $stderr = <$stderrFH>; - - close $stdoutFH; - close $stderrFH; - - unlink $stdoutFileName or die "Cannot unlink $stdoutFileName: $!"; - unlink $stderrFileName or die "Cannot unlink $stderrFileName: $!"; - return ($stdout, $stderr); -} - -sub convertAbsolutepathToWebKitPath($) -{ - my $string = shift; - my $sourceDir = LoadAsModule::sourceDir(); - $sourceDir .= "/" unless $sourceDir =~ m-/$-; - $string =~ s/$sourceDir//g; - return $string; -} |