1# tdir that only exes the files. 2args="../.." 3if test "$1" = "-a"; then 4 args=$2 5 shift 6 shift 7fi 8 9# This will keep the temporary directory around and return 1 when the test failed. 10DEBUG=0 11test -n "$DEBUG_TDIR" && DEBUG=1 12 13quiet=0 14if test "$1" = "-q"; then 15 quiet=1 16 shift 17fi 18 19if test "$1" = "clean"; then 20 if test $quiet = 0; then 21 echo "rm -f result.* .done* .skip* .tdir.var.master .tdir.var.test" 22 fi 23 rm -f result.* .done* .skip* .tdir.var.master .tdir.var.test 24 exit 0 25fi 26if test "$1" = "fake"; then 27 if test $quiet = 0; then 28 echo "minitdir fake $2" 29 fi 30 echo "fake" > .done-`basename $2 .tdir` 31 exit 0 32fi 33if test "$1" = "-f" && test "$2" = "report"; then 34 echo "Minitdir Long Report" 35 pass=0 36 fail=0 37 skip=0 38 echo " STATUS ELAPSED TESTNAME TESTDESCRIPTION" 39 for result in *.tdir; do 40 name=`basename $result .tdir` 41 timelen=" " 42 desc="" 43 if test -f "result.$name"; then 44 timestart=`grep ^DateRunStart: "result.$name" | sed -e 's/DateRunStart: //'` 45 timeend=`grep ^DateRunEnd: "result.$name" | sed -e 's/DateRunEnd: //'` 46 timesec=`expr $timeend - $timestart` 47 timelen=`printf %4ds $timesec` 48 if test $? -ne 0; then 49 timelen="$timesec""s" 50 fi 51 desc=`grep ^Description: "result.$name" | sed -e 's/Description: //'` 52 fi 53 if test -f ".done-$name"; then 54 if test $quiet = 0; then 55 echo "** PASSED ** $timelen $name: $desc" 56 pass=`expr $pass + 1` 57 fi 58 elif test -f ".skip-$name"; then 59 echo ".. SKIPPED.. $timelen $name: $desc" 60 skip=`expr $skip + 1` 61 else 62 if test -f "result.$name"; then 63 echo "!! FAILED !! $timelen $name: $desc" 64 fail=`expr $fail + 1` 65 else 66 echo ".. SKIPPED.. $timelen $name: $desc" 67 skip=`expr $skip + 1` 68 fi 69 fi 70 done 71 echo "" 72 if test "$skip" = "0"; then 73 echo "$pass pass, $fail fail" 74 else 75 echo "$pass pass, $fail fail, $skip skip" 76 fi 77 echo "" 78 exit 0 79fi 80if test "$1" = "report" || test "$2" = "report"; then 81 echo "Minitdir Report" 82 for result in *.tdir; do 83 name=`basename $result .tdir` 84 if test -f ".done-$name"; then 85 if test $quiet = 0; then 86 echo "** PASSED ** : $name" 87 fi 88 elif test -f ".skip-$name"; then 89 if test $quiet = 0; then 90 echo ".. SKIPPED.. : $name" 91 fi 92 else 93 if test -f "result.$name"; then 94 echo "!! FAILED !! : $name" 95 else 96 if test $quiet = 0; then 97 echo ".. SKIPPED.. : $name" 98 fi 99 fi 100 fi 101 done 102 exit 0 103fi 104 105if test "$1" != 'exe'; then 106 # usage 107 echo "mini tdir. Reduced functionality for old shells." 108 echo " tdir [-q] exe <file>" 109 echo " tdir [-q] fake <file>" 110 echo " tdir [-q] clean" 111 echo " tdir [-q|-f] report" 112 exit 1 113fi 114shift 115 116# do not execute if the disk is too full 117#DISKLIMIT=100000 118# This check is not portable (to Solaris 10). 119#avail=`df . | tail -1 | awk '{print $4}'` 120#if test "$avail" -lt "$DISKLIMIT"; then 121 #echo "minitdir: The disk is too full! Only $avail." 122 #exit 1 123#fi 124 125name=`basename $1 .tdir` 126dir=$name.$$ 127result=result.$name 128done=.done-$name 129skip=.skip-$name 130success="no" 131if test -x "`which bash`"; then 132 shell="bash" 133else 134 shell="sh" 135fi 136 137# check already done 138if test -f $done; then 139 echo "minitdir $done exists. skip test." 140 exit 0 141fi 142 143# Copy 144if test $quiet = 0; then 145 echo "minitdir copy $1 to $dir" 146fi 147mkdir $dir 148if cp --help 2>&1 | grep -- "-a" >/dev/null; then 149cp -a $name.tdir/* $dir/ 150else 151cp -R $name.tdir/* $dir/ 152fi 153cd $dir 154 155# EXE 156echo "minitdir exe $name" > $result 157grep "Description:" $name.dsc >> $result 2>&1 158echo "DateRunStart: "`date "+%s" 2>/dev/null` >> $result 159if test -f $name.pre; then 160 if test $quiet = 0; then 161 echo "minitdir exe $name.pre" 162 fi 163 echo "minitdir exe $name.pre" >> $result 164 $shell $name.pre $args >> $result 165 exit_value=$? 166 if test $exit_value -eq 3; then 167 echo "$name: SKIPPED" >> $result 168 echo "$name: SKIPPED" > ../$skip 169 echo "$name: SKIPPED" 170 elif test $exit_value -ne 0; then 171 echo "Warning: $name.pre did not exit successfully" 172 fi 173fi 174if test -f $name.test -a ! -f ../$skip; then 175 if test $quiet = 0; then 176 echo "minitdir exe $name.test" 177 fi 178 echo "minitdir exe $name.test" >> $result 179 $shell $name.test $args >>$result 2>&1 180 if test $? -ne 0; then 181 echo "$name: FAILED" >> $result 182 echo "$name: FAILED" 183 success="no" 184 else 185 echo "$name: PASSED" >> $result 186 echo "$name: PASSED" > ../$done 187 if test $quiet = 0; then 188 echo "$name: PASSED" 189 fi 190 success="yes" 191 fi 192fi 193if test -f $name.post -a ! -f ../$skip; then 194 if test $quiet = 0; then 195 echo "minitdir exe $name.post" 196 fi 197 echo "minitdir exe $name.post" >> $result 198 $shell $name.post $args >> $result 199 if test $? -ne 0; then 200 echo "Warning: $name.post did not exit successfully" 201 fi 202fi 203echo "DateRunEnd: "`date "+%s" 2>/dev/null` >> $result 204 205mv $result .. 206cd .. 207if test $DEBUG -eq 0; then 208 rm -rf $dir 209 # compat for windows where deletion may not succeed initially (files locked 210 # by processes that still have to exit). 211 if test $? -eq 1; then 212 echo "minitdir waiting for processes to terminate" 213 sleep 2 # some time to exit, and try again 214 rm -rf $dir 215 fi 216else 217 if test $success = "no"; then 218 exit 1 219 fi 220 exit 0 221fi 222