1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#!/bin/sh
# vim: set ts=4:
set -eu
_diff() {
diff -uU 999 -L "$1" -L "$2" "$1" "$2"
}
: ${TEST_NAME:=${1:-}}
: ${TEST_COMMAND:="${ESH:-esh} $TEST_NAME.in"}
if [ -z "$TEST_NAME" ]; then
echo "Usage: $0 TEST_NAME" >&2; exit 1
fi
if [ ! -f "$TEST_NAME.exp" ] && [ ! -f "$TEST_NAME.exp2" ]; then
echo "Neither $TEST_NAME.exp nor $TEST_NAME.exp2 exists" >&2; exit 1
fi
diff_status=0
esh_status=0
$TEST_COMMAND > "$TEST_NAME.err" 2> "$TEST_NAME.err2" || esh_status=$?
if [ -f "$TEST_NAME.exp" ]; then
_diff "$TEST_NAME.exp" "$TEST_NAME.err" || diff_status=$?
fi
if [ -f "$TEST_NAME.exp2" ] || [ "$esh_status" -ne 0 ]; then
exp2_file="$TEST_NAME.exp2"
test -f "$exp2_file" || exp2_file='no-error.exp2'
echo "%exit-status: $esh_status" >> "$TEST_NAME.err2"
_diff "$exp2_file" "$TEST_NAME.err2" >&2 || diff_status=$?
fi
exit $diff_status
|