X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FTestRunner.sh;h=1fb50cf1c2fa740abf72f619242e979524c96260;hb=0e72512a6c89622cca8dc31e2bde930a49cc4721;hp=2c96fd5b48672fb2ac1f9cbec9c48e46d54cc281;hpb=6d8cdf1e39da953da80b9e2e3e726271fe52df72;p=oota-llvm.git diff --git a/test/TestRunner.sh b/test/TestRunner.sh index 2c96fd5b486..1fb50cf1c2f 100755 --- a/test/TestRunner.sh +++ b/test/TestRunner.sh @@ -1,50 +1,32 @@ #!/bin/sh # -# TestRunner.sh - This script is used to run arbitrary unit tests. Unit -# tests must contain the command used to run them in the input file, starting -# immediately after a "RUN:" string. +# TestRunner.sh - This script is used to run the deja-gnu tests exactly like +# deja-gnu does, by executing the Tcl script specified in the test case's +# RUN: lines. This is made possible by a simple make target supported by the +# test/Makefile. All this script does is invoke that make target. # -# This runner recognizes and replaces the following strings in the command: +# Usage: +# TestRunner.sh {script_names} # -# %s - Replaced with the input name of the program, or the program to -# execute, as appropriate. -# %llvmgcc - llvm-gcc command -# %llvmgxx - llvm-g++ command -# %prcontext - prcontext.tcl script +# This script is typically used by cd'ing to a test directory and then +# running TestRunner.sh with a list of test file names you want to run. # - -FILENAME=$1 -TESTNAME=$1 -SUBST=$1 -FILENAME_ONLY=`basename $1` -OUTPUT=Output/$FILENAME_ONLY.out - -# create the output directory if it does not already exist -mkdir Output > /dev/null 2>&1 - -if test $# != 1; then - # If more than one parameter is passed in, there must be three parameters: - # The filename to read from (already processed), the command used to execute, - # and the file to output to. - SUBST=$2 - OUTPUT=$3 - TESTNAME=$3 -fi - -ulimit -t 40 - -SCRIPT=$OUTPUT.script -grep 'RUN:' $FILENAME | sed "s|^.*RUN:\(.*\)$|\1|g;s|%s|$SUBST|g;s|%llvmgcc|llvm-gcc -emit-llvm|g;s|%llvmgxx|llvm-g++ -emit-llvm|g;s|%prcontext|prcontext.tcl|g" > $SCRIPT - -grep -q XFAIL $FILENAME && (printf "XFAILED '$TESTNAME': "; grep XFAIL $FILENAME) - -/bin/sh $SCRIPT > $OUTPUT 2>&1 || ( - echo "******************** TEST '$TESTNAME' FAILED! ********************" - echo "Command: " - cat $SCRIPT - echo "Output:" - cat $OUTPUT - rm $OUTPUT - echo "******************** TEST '$TESTNAME' FAILED! ********************" -) - +for TESTFILE in "$@" ; do + if test `dirname $TESTFILE` == . ; then + TESTPATH=`pwd` + SUBDIR="" + while test `basename $TESTPATH` != "test" -a ! -z "$TESTPATH" ; do + tmp=`basename $TESTPATH` + SUBDIR="$tmp/$SUBDIR" + TESTPATH=`dirname $TESTPATH` + done + if test -d "$TESTPATH" ; then + cd $TESTPATH + make check-one TESTONE="$SUBDIR$TESTFILE" + else + echo "Can't find llvm/test directory in " `pwd` + fi + else + make check-one TESTONE=$TESTFILE + fi +done