Home | History | Annotate | Line # | Download | only in tests
run-tests revision 1.1.1.2
      1 #! /bin/sh
      2 
      3 # Copyright (C) 2000-2002, 2004, 2005, 2011, 2012, 2016  Niels Mller
      4 #
      5 # This program is free software; you can redistribute it and/or modify
      6 # it under the terms of the GNU General Public License as published by
      7 # the Free Software Foundation; either version 2 of the License, or
      8 # (at your option) any later version.
      9 #
     10 # This program is distributed in the hope that it will be useful,
     11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 # GNU General Public License for more details.
     14 #
     15 # You should have received a copy of the GNU General Public License along
     16 # with this program; if not, write to the Free Software Foundation, Inc.,
     17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
     18 
     19 failed=0
     20 all=0
     21 
     22 debug='no'
     23 testflags=''
     24 
     25 if [ -z "$srcdir" ] ; then
     26   srcdir=`pwd`
     27 fi
     28 
     29 export srcdir
     30 
     31 # When used in make rules, we sometimes get the filenames VPATH
     32 # expanded, but usually not.
     33 find_program () {
     34     case "$1" in
     35 	*/*)
     36 	  echo "$1"
     37 	  ;;
     38 	*)
     39 	  if [ -x "$1" ] ; then
     40 	      echo "./$1"
     41 	  else
     42 	      echo "$srcdir/$1"
     43 	  fi
     44 	  ;;
     45     esac
     46 }
     47 
     48 env_program () {
     49   if [ -x "$1" ] ; then
     50     if "$1"; then : ; else
     51       echo FAIL: $1
     52       exit 1
     53     fi
     54   fi
     55 }
     56 
     57 TEST_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
     58 TEST_DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH"
     59 
     60 if [ "$TEST_LIBRARY_PATH" ] ; then
     61   TEST_LD_LIBRARY_PATH="$TEST_LIBRARY_PATH:$TEST_LD_LIBRARY_PATH"
     62   TEST_DYLD_LIBRARY_PATH="$TEST_LIBRARY_PATH:$TEST_DYLD_LIBRARY_PATH"
     63 fi
     64 
     65 test_program () {
     66   testname=`basename "$1" .exe`
     67   testname=`basename "$testname" -test`
     68   if [ -z "$EMULATOR" ] || head -1 "$1" | grep '^#!' > /dev/null; then
     69     LD_LIBRARY_PATH="$TEST_LD_LIBRARY_PATH" \
     70     DYLD_LIBRARY_PATH="$TEST_DYLD_LIBRARY_PATH" \
     71     "$1" $testflags
     72   else
     73     $EMULATOR "$1" $testflags
     74   fi
     75   case "$?" in
     76       0)
     77 	echo PASS: $testname
     78 	all=`expr $all + 1`
     79 	;;
     80       77)
     81 	echo SKIP: $testname
     82       ;;
     83       *)
     84 	echo FAIL: $testname
     85 	failed=`expr $failed + 1`
     86 	all=`expr $all + 1`
     87 	;;
     88   esac
     89 }
     90 
     91 env_program `find_program setup-env`
     92 
     93 while test $# != 0
     94 do
     95   case "$1" in
     96   --debug)
     97     debug=yes
     98     ;;
     99   -v)
    100     testflags='-v'
    101     ;;
    102   -*)
    103     echo >&2 'Unknown option `'"$1'"
    104     exit 1
    105     ;;
    106   *)
    107     break
    108     ;;
    109   esac
    110   shift
    111 done
    112 
    113 # Comment out special handling for zero arguments to support separate
    114 # tests-build/tests-run.
    115 #if [ $# -eq 0 ] ; then
    116 #  for f in *-test; do test_program "./$f"; done
    117 #else
    118   for f in "$@" ; do test_program `find_program "$f"`; done
    119 #fi
    120 
    121 if [ $failed -eq 0 ] ; then
    122   banner="All $all tests passed"
    123 else
    124   banner="$failed of $all tests failed"
    125 fi
    126 dashes=`echo "$banner" | sed s/./=/g`
    127 echo "$dashes"
    128 echo "$banner"
    129 echo "$dashes"
    130 
    131 if [ "x$debug" = xno ] ; then
    132   env_program `find_program teardown-env`
    133 fi
    134 
    135 [ "$failed" -eq 0 ]
    136