1#!/bin/sh 2 3test -x hush || { echo "No ./hush?!"; exit; } 4 5PATH="$PWD:$PATH" # for hush and recho/zecho/printenv 6export PATH 7 8THIS_SH="$PWD/hush" 9export THIS_SH 10 11do_test() 12{ 13 test -d "$1" || return 0 14 ( 15 cd "$1" || { echo "cannot cd $1!"; exit 1; } 16 for x in run-*; do 17 test -f "$x" || continue 18 case "$x" in 19 "$0"|run-minimal|run-gprof) ;; 20 *.orig|*~) ;; 21 #*) echo $x ; sh $x ;; 22 *) 23 sh "$x" >"../$1-$x.fail" 2>&1 && \ 24 { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail"; 25 ;; 26 esac 27 done 28 # Many bash run-XXX scripts just do this, 29 # no point in duplication it all over the place 30 for x in *.tests; do 31 test -x "$x" || continue 32 name="${x%%.tests}" 33 test -f "$name.right" || continue 34 { 35 "$THIS_SH" "./$x" >"$name.xx" 2>&1 36 diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail" 37 } && echo "$1/$x: ok" || echo "$1/$x: fail" 38 done 39 ) 40} 41 42# Main part of this script 43# Usage: run-all [directories] 44 45if [ $# -lt 1 ]; then 46 # All sub directories 47 modules=`ls -d hush-*` 48 49 for module in $modules; do 50 do_test $module 51 done 52else 53 while [ $# -ge 1 ]; do 54 if [ -d $1 ]; then 55 do_test $1 56 fi 57 shift 58 done 59fi 60