123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- #! /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/fast/{js,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`
- function 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/fast/js/jsc-test-list
- fi
- preScript=$testRoot/fast/js/resources/standalone-pre.js
- postScript=$testRoot/fast/js/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
- echo "Testing $test ... \c"
- let 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
- let numPassed=$numPassed+1
- else
- echo "$test" >> $failList
- let numFailed=$numFailed+1
- if [ $testCrashed -eq 1 ]
- then
- echo "$test" >> $crashList
- let 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"
|