158 lines
4.4 KiB
Bash
Executable File
158 lines
4.4 KiB
Bash
Executable File
#! /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/Helpers/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"
|