| #! /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` | |
| cmdName=`basename $0` | |
| usage() | |
| { | |
| echo "usage: $cmdName [[--jsc | -j] <path-to-jsc>] [[--results-dir | -r] <results-path>]" | |
| echo " [[--test-root | -t] <test-root-path>]" | |
| exit 1 | |
| } | |
| while [ $# -gt 1 ] | |
| do | |
| case $1 in | |
| --jsc|-j) | |
| jscCmd=$2 | |
| ;; | |
| --results-dir|-r) | |
| resultsRoot=$2 | |
| ;; | |
| --test-root|-t) | |
| testRoot=$2 | |
| ;; | |
| *) | |
| echo "Unrecognized option \"$1\"" | |
| usage | |
| ;; | |
| esac | |
| shift 2 | |
| done | |
| if [ $# -gt 0 ] | |
| then | |
| echo "Extra argument \"$1\"" | |
| usage | |
| 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 testHTMLFile in `(cd $testRoot && ls -1 js/*.html fast/regex/*.html)` | |
| do | |
| testPassed=0 | |
| testCrashed=0 | |
| testName=`basename $testHTMLFile .html` | |
| dirName=`dirname $testHTMLFile` | |
| test=$dirName/$testName | |
| 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 $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" |