#!/bin/sh # # test -- run a client self test. # P="test" fix=`/bin/pwd` fix=`dirname $fix` fix=`dirname $fix` me="../autotest" # XXX: the exit status that indicates a rerun ... rerun=5 function runtests { for i in \ "$@" do case "$i" in *-filter|*-out|*-tmp|*.state) continue ;; esac ##echo "*** $i ...." { "$me" "$i" rc="$?" echo "--SELFTEST-- exit $rc" while [ "$rc" = "$rerun" ]; do "$me" --continue "$i" rc="$?" echo "--SELFTEST-- exit $rc" done } 2>&1 | `dirname "$i"`/NNN-filter "$i" | \ sed -e "s@$fix@SRC@" -e "s@, line [0-9]*@, line N@" \ >"$i-tmp" 2>&1 if [ ! -f "$i-out" ]; then echo "$P: WARNING: $i: no results for test" cat "$i-tmp" elif ! cmp "$i-out" "$i-tmp"; then echo "$P: ERROR: $i: test failed" diff -u "$i-out" "$i-tmp" else echo "$P: PASS: $i: test passed" fi done } # Run all of the tests. case "$1" in clean) rm -rf tests/*-tmp tests/*.state ;; test) runtests tests/* ;; *) runtests "$@" ;; esac