| #!/usr/bin/env perl |
| |
| # Copyright (C) 2011 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. |
| # 3. Neither the name of Apple 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 Regular Expression functional tests. |
| |
| use strict; |
| use warnings; |
| use FindBin; |
| use Getopt::Long qw(:config pass_through); |
| use lib $FindBin::Bin; |
| use webkitdirs; |
| use POSIX; |
| |
| # determine configuration |
| setConfiguration(); |
| my $configuration = configuration(); |
| |
| my $defaultTestFile = "RegExpTest.data"; |
| |
| # These variables are intentionally left undefined. |
| my $root; |
| my $testFile; |
| my $showHelp; |
| my $verbose; |
| |
| my $buildJSC = 1; |
| |
| my $programName = basename($0); |
| my $buildJSCDefault = $buildJSC ? "will check" : "will not check"; |
| my $usage = <<EOF; |
| Usage: $programName [options] [options to pass to build system] |
| --help Show this help message |
| --file= File to use instead of default ($defaultTestFile) |
| --root= Path to pre-built root containing jsc |
| --[no-]build Check (or don't check) to see if the jsc build is up-to-date (default: $buildJSCDefault) |
| --verbose Increase test output on failures |
| EOF |
| |
| GetOptions( |
| 'verbose' => \$verbose, |
| 'root=s' => \$root, |
| 'file=s' => \$testFile, |
| 'build!' => \$buildJSC, |
| 'help' => \$showHelp |
| ); |
| |
| # Assume any arguments left over from GetOptions are assumed to be build arguments |
| my @buildArgs = @ARGV; |
| |
| |
| if ($showHelp) { |
| print STDERR $usage; |
| exit 1; |
| } |
| |
| setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root)); |
| |
| if (!defined($root) && $buildJSC) { |
| chdirWebKit(); |
| |
| push(@buildArgs, argumentsForConfiguration()); |
| |
| print "Running: build-jsc " . join(" ", @buildArgs) . "\n"; |
| my $buildResult = system "perl", "Tools/Scripts/build-jsc", @buildArgs; |
| if ($buildResult) { |
| print STDERR "Compiling jsc failed!\n"; |
| exit exitStatus($buildResult); |
| } |
| } |
| |
| my $productDir = jscProductDir(); |
| $ENV{DYLD_FRAMEWORK_PATH} = $productDir; |
| setPathForRunningWebKitApp(\%ENV) if isCygwin(); |
| |
| sub testapiPath($) |
| { |
| my ($productDir) = @_; |
| my $jscName = "testapi"; |
| $jscName .= "_debug" if configuration() eq "Debug_All"; |
| return "$productDir/$jscName"; |
| } |
| |
| # Find JavaScriptCore directory |
| if (!defined($testFile)) { |
| $testFile = $defaultTestFile; |
| chdirWebKit(); |
| chdir("Source/JavaScriptCore"); |
| chdir "tests/regexp" or die; |
| } |
| |
| my $command = $productDir . "/testRegExp"; |
| |
| if (defined($verbose) && $verbose) { |
| $command .= " --verbose"; |
| } |
| |
| $command .= " " . $testFile; |
| |
| printf "Running: " . $command . "\n"; |
| my $result = system $command; |
| exit exitStatus($result) if $result; |
| |