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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
#!/bin/sh
NL='
'
export LANG="en_US.UTF-8"
export VIS_PATH=.
[ -z "$VIS" ] && VIS="../../vis"
[ -z "$SAM" ] && SAM="sam"
[ -z "$PLAN9" ] && PLAN9="/usr/local/plan9/bin"
for SAM in "$SAM" "$PLAN9/sam" /usr/lib/plan9/bin/sam 9; do
if type "$SAM" >/dev/null 2>&1; then
break
fi
done
type "$SAM" >/dev/null 2>&1 || {
echo "sam(1) not found, skipping tests"
exit 0
}
[ "$SAM" = "9" ] && SAM="9 sam"
echo "$SAM"
$VIS -v
if ! $VIS -v | grep '+lua' >/dev/null 2>&1; then
echo "vis compiled without lua support, skipping tests"
exit 0
fi
TESTS=$1
[ -z "$TESTS" ] && TESTS=$(find . -name '*.cmd' | sed 's/\.cmd$//g')
TESTS_RUN=0
TESTS_OK=0
for t in $TESTS; do
IN="$t.in"
SAM_OUT="$t.sam.out"
SAM_ERR="$t.sam.err"
VIS_OUT="$t.vis.out"
VIS_ERR="$t.vis.err"
REF="$t.ref"
rm -f "$SAM_OUT" "$SAM_ERR" "$VIS_OUT" "$VIS_ERR"
printf "Running test %s with sam ... " "$t"
{
echo ',{'
cat "$t.cmd"
echo '}'
echo ,
} | $SAM -d "$IN" > "$SAM_OUT" 2>/dev/null
if [ $? -ne 0 ]; then
printf "ERROR\n"
elif [ -e "$REF" ]; then
if cmp -s "$REF" "$SAM_OUT"; then
printf "OK\n"
else
printf "FAIL\n"
diff -u "$REF" "$SAM_OUT" > "$SAM_ERR"
fi
elif [ -e "$SAM_OUT" ]; then
REF="$SAM_OUT"
printf "OK\n"
fi
if [ ! -e "$REF" ]; then
printf " No reference solution, skipping.\n"
continue
fi
TESTS_RUN=$((TESTS_RUN+1))
$VIS '+qall!' "$IN" </dev/null 2>/dev/null
RETURN_CODE=$?
printf "Running test %s with vis ... " "$t"
if [ $RETURN_CODE -ne 0 -o ! -e "$VIS_OUT" ]; then
printf "ERROR\n"
elif cmp -s "$REF" "$VIS_OUT"; then
printf "OK\n"
TESTS_OK=$((TESTS_OK+1))
else
printf "FAIL\n"
diff -u "$REF" "$VIS_OUT" > "$VIS_ERR"
fi
done
printf "Tests ok %d/%d\n" $TESTS_OK $TESTS_RUN
# set exit status
[ $TESTS_OK -eq $TESTS_RUN ]
|