| #! /bin/sh |
| |
| # Copyright (C) 2012 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. ``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 |
| # 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 selected LayoutTests/{js,fast/regex} tests using jsc |
| |
| jscCmd="/System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc" |
| testRoot=/tmp/LayoutTests |
| resultsRoot=`date \+/tmp/results-%Y-%m-%d-%H-%M-%S` |
| testList="unset" |
| |
| cmdName=`basename $0` |
| |
| usage() |
| { |
| echo "usage: $cmdName [[--jsc | -j] <path-to-jsc>] [[--results-dir | -r] <results-path>]" |
| echo " [[--test-root | -t] <test-root-path>] [[--test-list | -l] <test-list-file>]" |
| exit 1 |
| } |
| |
| while [ $# -gt 1 ] |
| do |
| case $1 in |
| --jsc|-j) |
| jscCmd=$2 |
| ;; |
| --results-dir|-r) |
| resultsRoot=$2 |
| ;; |
| --test-root|-t) |
| testRoot=$2 |
| ;; |
| --test-list|-l) |
| testList=$2 |
| ;; |
| *) |
| echo "Unrecognized option \"$1\"" |
| usage |
| ;; |
| esac |
| |
| shift 2 |
| done |
| |
| if [ $# -gt 0 ] |
| then |
| echo "Extra argument \"$1\"" |
| usage |
| fi |
| |
| if [ $testList = "unset" ] |
| then |
| testList=$testRoot/js/jsc-test-list |
| fi |
| |
| preScript=$testRoot/resources/standalone-pre.js |
| postScript=$testRoot/resources/standalone-post.js |
| passList=$resultsRoot/passed |
| failList=$resultsRoot/failed |
| crashList=$resultsRoot/crashed |
| |
| numTestsRun=0 |
| numPassed=0 |
| numFailed=0 |
| numCrashed=0 |
| |
| rm -rf $resultsRoot |
| rm -f jsc-tests-passed jsc-tests-failed |
| |
| for test in `cat $testList` |
| do |
| testPassed=0 |
| testCrashed=0 |
| testName=`basename $test` |
| dirName=`dirname $test` |
| |
| expectedOut="$testRoot/$dirName/${testName}-expected.txt" |
| actualOut="$resultsRoot/$dirName/${testName}-out.txt" |
| actualErr="$resultsRoot/$dirName/${testName}-err.txt" |
| diffOut="$resultsRoot/$dirName/${testName}-diff.txt" |
| jsTest="$testRoot/$dirName/script-tests/${testName}.js" |
| |
| if [ ! -d "$resultsRoot/$dirName" ] |
| then |
| mkdir -p "$resultsRoot/$dirName" |
| fi |
| |
| if [ -f $expectedOut -a -f $jsTest ] |
| then |
| if [ `uname` = 'Darwin' ]; then |
| echo "Testing $test ... \c" |
| else |
| echo -n "Testing $test ..." |
| fi |
| numTestsRun=$(($numTestsRun+1)) |
| $jscCmd $preScript $jsTest $postScript 2>$actualErr > $actualOut |
| JSC_RES=$? |
| |
| if [ $JSC_RES -eq 0 ] |
| then |
| diff $actualOut $expectedOut > $diffOut |
| if [ $? -eq 0 ] |
| then |
| testPassed=1 |
| echo "PASSED" |
| else |
| testPassed=0 |
| echo "FAILED" |
| fi |
| else |
| testPassed=0 |
| if [ $JSC_RES -gt 128 ] |
| then |
| testCrashed=1 |
| echo "CRASHED" |
| else |
| echo "ERROR: $JSC_RES" |
| fi |
| fi |
| |
| if [ $testPassed -eq 1 ] |
| then |
| echo "$test" >> $passList |
| numPassed=$(($numPassed+1)) |
| else |
| echo "$test" >> $failList |
| numFailed=$(($numFailed+1)) |
| if [ $testCrashed -eq 1 ] |
| then |
| echo "$test" >> $crashList |
| numCrashed=$(($numCrashed+1)) |
| fi |
| fi |
| fi |
| done |
| |
| if [ $numPassed -eq $numTestsRun ] |
| then |
| echo "All $numTestsRun tests passed!" | tee $resultsRoot/summary |
| else |
| echo "$numPassed tests passed, $numFailed tests failed, $numCrashed tests crashed." | tee $resultsRoot/summary |
| fi |
| |
| echo "Test results in $resultsRoot" |