#!/bin/sh # # Written by Tony Finch # at the University of Cambridge Computing Service. # You may do anything with this, at your own risk. # # $Cambridge: users/fanf2/selog/test-script,v 1.13 2008/04/09 17:57:23 fanf2 Exp $ # cd Test WORK=$(pwd -P) FILES="selone seltwo selall stdout stderr status" ENOENT="No such file or directory" NODATE="XXXX-XX-XX XX:XX:XX *XX:XX" for test in 0* do rm -f [a-z]* ln -s $test test echo Test/$test date=$(date +"%Y-%m-%d %H:%M:%S %z" | sed 's/..$/:&/') sed "s|/WORK|$WORK|g" $test/cmd >cmd sh cmd 1>stdout 2>stderr echo $? >status touch seltmp for file in sel* do sed "s|$date|$NODATE|" <$file >$file- mv $file- $file done rm seltmp for file in std* do sed "s|$WORK|/WORK|" <$file >$file- mv $file- $file done for file in $FILES do if [ -f $test/$file -a -f $file ] then diff -u $test/$file $file fi if [ -f $test/$file -a ! -f $file ] then diff -u $test/$file /dev/null | sed "s|+++ /dev/null.*|+++ $file $ENOENT|" fi if [ ! -f $test/$file -a -s $file ] then diff -u /dev/null $file | sed "s|--- /dev/null.*|--- $test/$file $ENOENT|" fi if [ ! -f $test/$file -a ! -s $file -a -f $file ] then printf "%s %s $ENOENT\n" "---" $test/$file printf "%s %s empty\n" "+++" $file fi done >diffs if [ -s diffs ] then cat diffs echo FAILED echo Update/Continue/Quit? read input case $input in u*) rm -f $test/s* cp s* $test exit 1 ;; c*) : ok ;; *) exit 1 ;; esac fi done rm -f [a-z]* echo PASSED exit