📄 run-javascriptcore-tests
字号:
#!/usr/bin/perl -w# Copyright (C) 2005 Apple Computer, Inc. All rights reserved.# Copyright (C) 2007 Eric Seidel <eric@webkit.org>## 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. # 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of# its contributors may be used to endorse or promote products derived# from this software without specific prior written permission. ## THIS SOFTWARE IS PROVIDED BY APPLE 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 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.# Script to run the WebKit Open Source Project JavaScriptCore tests (adapted from Mozilla).use strict;use FindBin;use Getopt::Long qw(:config pass_through);use lib $FindBin::Bin;use webkitdirs;use POSIX;# determine configurationmy $configuration;setConfiguration();$configuration = configuration();my $jsDriverArgs = "";my $root; # intentionally left undefinedmy $run64Bit = 0;my $showHelp = 0;my $programName = basename($0);my $usage = <<EOF;Usage: $programName [options] [options to pass to build system] --help Show this help message --64-bit Use the 64bit jsc binary --jsDriver-args= A string of arguments to pass to jsDriver.pl --root= Path to pre-built root containing jscEOFGetOptions( '64-bit' => \$run64Bit, 'j|jsDriver-args=s' => \$jsDriverArgs, 'root=s' => \$root, 'help' => \$showHelp);# Assume any arguments left over from GetOptions are assumed to be build argumentsmy @buildArgs = @ARGV;# Arguments passed to --jsDriver-args (if any) are passed to jsDriver.plmy @jsArgs = split(" ", $jsDriverArgs);if ($showHelp) { print STDERR $usage; exit 1;}setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root));if (isAppleMacWebKit() && !isTiger()) { my $preferredArch = preferredArchitecture("JavaScriptCore"); setRun64Bit($run64Bit); my $arch = preferredArchitecture("JavaScriptCore"); if ($arch ne $preferredArch) { push(@jsArgs, "-a", $arch); }}if (!defined($root)){ chdirWebKit(); push(@buildArgs, argumentsForConfiguration()); my $arch = preferredArchitecture("JavaScriptCore"); push(@buildArgs, "ARCHS=$arch") if (isAppleMacWebKit()); print "Running: build-jsc " . join(" ", @buildArgs) . "\n"; my $buildResult = system "perl", "WebKitTools/Scripts/build-jsc", @buildArgs; if ($buildResult) { print STDERR "Compiling jsc failed!\n"; exit exitStatus($buildResult); }}# Find JavaScriptCore directorychdirWebKit();chdir("JavaScriptCore");my $productDir = productDir();chdir "tests/mozilla" or die;$productDir .= "/JavaScriptCore" if isQt();$productDir .= "/Programs" if isGtk();$ENV{DYLD_FRAMEWORK_PATH} = $productDir;setPathForRunningWebKitApp(\%ENV) if isCygwin();sub jscPath($){ my ($productDir) = @_; my $jscName = "jsc"; $jscName .= "_debug" if (isCygwin() && ($configuration eq "Debug")); return "$productDir/$jscName";}printf "Running: jsDriver.pl -e squirrelfish -s %s -f actual.html %s\n", jscPath($productDir), join(" ", @jsArgs);my $result = system "perl", "jsDriver.pl", "-e", "squirrelfish", "-s", jscPath($productDir), "-f", "actual.html", @jsArgs;exit exitStatus($result) if $result;my %failures;open EXPECTED, "expected.html" or die;while (<EXPECTED>) { last if /failures reported\.$/;}while (<EXPECTED>) { chomp; $failures{$_} = 1;}close EXPECTED;my %newFailures;open ACTUAL, "actual.html" or die;while (<ACTUAL>) { last if /failures reported\.$/;}while (<ACTUAL>) { chomp; if ($failures{$_}) { delete $failures{$_}; } else { $newFailures{$_} = 1; }}close ACTUAL;my $numNewFailures = keys %newFailures;if ($numNewFailures) { print "\n** Danger, Will Robinson! Danger! The following failures have been introduced:\n"; foreach my $failure (sort keys %newFailures) { print "\t$failure\n"; }}my $numOldFailures = keys %failures;if ($numOldFailures) { print "\nYou fixed the following test"; print "s" if $numOldFailures != 1; print ":\n"; foreach my $failure (sort keys %failures) { print "\t$failure\n"; }}print "\n";print "$numNewFailures regression";print "s" if $numNewFailures != 1;print " found.\n";print "$numOldFailures test";print "s" if $numOldFailures != 1;print " fixed.\n";print "OK.\n" if $numNewFailures == 0;exit(1) if $numNewFailures;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -