diff options
Diffstat (limited to 'runtest')
-rwxr-xr-x | runtest | 122 |
1 files changed, 122 insertions, 0 deletions
@@ -0,0 +1,122 @@ +#!/bin/sh +# +# runtest -- basically all this script does is find the proper expect +# shell and then run DejaGnu. +# +# Written by Rob Savoye <rob@cygnus.com> +# + +# +# Get the execution path to this script and the current directory. +# +mypath=${0-.} +if expr ${mypath} : '.*/.*' > /dev/null +then + : +else + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" + for dir in $PATH + do + test -z "$dir" && dir=. + if test -x $dir/$mypath + then + mypath=$dir/$mypath + break + fi + done + IFS="$save_ifs" +fi +execpath=`echo ${mypath} | sed -e 's@/[^/]*$@@'` +# rootme=`pwd` + +# +# get the name by which runtest was invoked and extract the config triplet +# +runtest=`echo ${mypath} | sed -e 's@^.*/@@'` +target=`echo $runtest | sed -e 's/-runtest$//'` +if [ "$target" != runtest ] ; then + target="--target ${target}" +else + target="" +fi + +# +# Find the right expect binary to use. If a variable EXPECT exists, +# it takes precedence over all other tests. Otherwise look for a freshly +# built one, and then use one in the path. +# +if [ x"$EXPECT" != x ] ; then + expectbin=$EXPECT +else + if [ -x "$execpath/expect" ] ; then + expectbin=$execpath/expect + else + expectbin=expect + fi +fi + +# just to be safe... +if [ -z "$expectbin" ]; then + echo "ERROR: No expect shell found" + exit 1 +fi + +# This wrapper script will set up run-time library search PATHs +if [ -x "$expectbin-bld.sh" ]; then + expectbin="${CONFIG_SHELL-/bin/sh} $expectbin-bld.sh" +fi + +# +# Extract a few options from the option list. +# +verbose=0 +debug="" +for a in "$@" ; do + case $a in + -v|--v|-verb*|--verb*) verbose=`expr $verbose + 1`;; + -D0|--D0) debug="-D 0" ;; + -D1|--D1) debug="-D 1" ;; + esac +done + +if expr $verbose \> 0 > /dev/null ; then + echo Expect binary is $expectbin +fi + +# +# find runtest.exp. First we look in it's installed location, otherwise +# start if from the source tree. +# +# runtest.exp is found in (autoconf-configure-set) @datadir@, but +# $execpath is @bindir@. We're assuming that +# +# @datadir@ == @bindir@/../share +# or +# @datadir@ == @bindir@/../../share +# +# which is a very weak assumption +# +for i in `echo ${execpath} | sed -e 's@/[^/]*$@/share/dejagnu@'` `echo ${execpath} | sed -e 's@/[^/]*/[^/]*$@/share/dejagnu@'` $execpath ; do + if expr $verbose \> 1 > /dev/null ; then + echo Looking for $i/runtest.exp. + fi + if [ -f $i/runtest.exp ] ; then + runpath=$i + if expr $verbose \> 0 > /dev/null ; then + echo Using $i/runtest.exp as main test driver + fi + fi +done +# check for an environment variable +if [ x"$DEJAGNULIBS" != x ] ; then + runpath=$DEJAGNULIBS + if expr $verbose \> 0 > /dev/null ; then + echo Using $DEJAGNULIBS/runtest.exp as main test driver + fi +fi +if [ x"$runpath" = x ] ; then + echo "ERROR: runtest.exp does not exist." + exit 1 +fi + +exec $expectbin $debug -- $runpath/runtest.exp $target ${1+"$@"} |