diff options
Diffstat (limited to 'WebKitTools/Scripts/run-api-tests')
-rwxr-xr-x | WebKitTools/Scripts/run-api-tests | 246 |
1 files changed, 0 insertions, 246 deletions
diff --git a/WebKitTools/Scripts/run-api-tests b/WebKitTools/Scripts/run-api-tests deleted file mode 100755 index 9db08fc..0000000 --- a/WebKitTools/Scripts/run-api-tests +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/perl -w - -# Copyright (C) 2010 Apple Inc. All rights reserved. -# -# 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. - -# Features to add: -# - Command line option to run a single test. -# - Command line option to run all tests in a suite. - -use strict; -use warnings; - -use File::Basename; -use FindBin; -use Getopt::Long qw(:config pass_through); -use IPC::Open3; -use lib $FindBin::Bin; -use webkitdirs; -use Term::ANSIColor qw(:constants); - -sub dumpAllTests(); -sub runAllTests(); -sub runAllTestsInSuite($); -sub runTest($$); -sub populateTests(); -sub buildTestTool(); - -my $showHelp = 0; -my $quiet = 0; -my $dump = 0; - -my $programName = basename($0); -my $usage = <<EOF; -Usage: $programName [options] - --help Show this help message - -q|--quite Less verbose output - -d|--dump-tests Dump the names of testcases without running them -EOF - -GetOptions( - 'help' => \$showHelp, - 'quiet|q' => \$quiet, - 'dump|d' => \$dump, -); - -if ($showHelp) { - print STDERR $usage; - exit 1; -} - -setConfiguration(); -buildTestTool(); -setPathForRunningWebKitApp(\%ENV); -my %testsToRun = populateTests(); - -if ($dump) { - dumpAllTests(); - exit 0; -} - -runAllTests(); - -sub dumpAllTests() -{ - print "Dumping test cases\n"; - print "------------------\n"; - for my $suite (keys %testsToRun) { - print $suite . ":\n"; - print map { " " . $_ . "\n" } @{ $testsToRun{$suite} }; - } - print "------------------\n"; -} - -sub runAllTests() -{ - my $anyFailures = 0; - for my $suite (keys %testsToRun) { - my $failed = runAllTestsInSuite($suite); - if ($failed) { - $anyFailures = 1; - } - } - return $anyFailures; -} - -sub runAllTestsInSuite($) -{ - my ($suite) = @_; - print "Suite: $suite\n"; - - my $anyFailures = 0; - for my $test (@{$testsToRun{$suite}}) { - my $failed = runTest($suite, $test); - if ($failed) { - $anyFailures = 1; - } - } - - return $anyFailures; -} - -sub runTest($$) -{ - my ($suite, $testName) = @_; - my $test = $suite . "/" . $testName; - - print " Test: $testName -> "; - - my $result = 0; - if (isAppleMacWebKit()) { - my $productDir = productDir(); - $ENV{DYLD_FRAMEWORK_PATH} = $productDir; - $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES"; - my $apiTesterPath = "$productDir/TestWebKitAPI"; - if (architecture()) { - $result = system "arch", "-" . architecture(), $apiTesterPath, $test, @ARGV; - } else { - $result = system $apiTesterPath, $test, @ARGV; - } - } elsif (isAppleWinWebKit()) { - my $apiTesterNameSuffix; - if (configurationForVisualStudio() ne "Debug_All") { - $apiTesterNameSuffix = ""; - } else { - $apiTesterNameSuffix = "_debug"; - } - my $apiTesterPath = File::Spec->catfile(productDir(), "TestWebKitAPI$apiTesterNameSuffix.exe"); - $result = system $apiTesterPath, $test, @ARGV; - } else { - die "run-api-tests is not supported on this platform.\n" - } - - if ($result == 0) { - print BOLD GREEN, "Passed", RESET, "\n"; - } else { - print BOLD RED, "Failed", RESET, "\n"; - } -} - - -sub populateTests() -{ - my @tests; - - if (isAppleMacWebKit()) { - my $productDir = productDir(); - $ENV{DYLD_FRAMEWORK_PATH} = $productDir; - $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES"; - my $apiTesterPath = "$productDir/TestWebKitAPI"; - - my ($pid, $childIn, $childOut); - if (architecture()) { - $pid = open3($childIn, $childOut, ">&STDERR", "arch", "-" . architecture(), $apiTesterPath, "--dump-tests") or die "Failed to build list of tests!"; - } else { - $pid = open3($childIn, $childOut, ">&STDERR", $apiTesterPath, "--dump-tests") or die "Failed to build list of tests!"; - } - close($childIn); - @tests = <$childOut>; - close($childOut); - - waitpid($pid, 0); - my $result = $?; - - if ($result) { - print STDERR "Failed to build list of tests!\n"; - exit exitStatus($result); - } - } elsif (isAppleWinWebKit()) { - my $apiTesterNameSuffix; - if (configurationForVisualStudio() ne "Debug_All") { - $apiTesterNameSuffix = ""; - } else { - $apiTesterNameSuffix = "_debug"; - } - my $apiTesterPath = File::Spec->catfile(productDir(), "TestWebKitAPI$apiTesterNameSuffix.exe"); - open(TESTS, "-|", $apiTesterPath, "--dump-tests") or die $!; - @tests = <TESTS>; - close(TESTS) or die $!; - } else { - die "run-api-tests is not supported on this platform.\n" - } - - my %keyedTests = (); - for my $test (@tests) { - $test =~ s/[\r\n]*$//; - my ($suite, $testName) = split(/\//, $test); - push @{$keyedTests{$suite}}, $testName; - } - - return %keyedTests; -} - -sub buildTestTool() -{ - chdirWebKit(); - - my $buildTestTool = "build-api-tests"; - print STDERR "Running $buildTestTool\n"; - - local *DEVNULL; - my ($childIn, $childOut, $childErr); - if ($quiet) { - open(DEVNULL, ">", File::Spec->devnull()) or die "Failed to open /dev/null"; - $childOut = ">&DEVNULL"; - $childErr = ">&DEVNULL"; - } else { - # When not quiet, let the child use our stdout/stderr. - $childOut = ">&STDOUT"; - $childErr = ">&STDERR"; - } - - my @args = argumentsForConfiguration(); - my $buildProcess = open3($childIn, $childOut, $childErr, "WebKitTools/Scripts/$buildTestTool", @args) or die "Failed to run " . $buildTestTool; - close($childIn); - waitpid $buildProcess, 0; - my $buildResult = $?; - close($childOut); - close($childErr); - - close DEVNULL if ($quiet); - - if ($buildResult) { - print STDERR "Compiling TestWebKitAPI failed!\n"; - exit exitStatus($buildResult); - } -} |