commit - 6ae7a56e0f08ffd6e04a5312789e91ddb3059fc9
commit + bcbeda04ca5558cceaa58058ce4b4c4b3660c708
blob - /dev/null
blob + 62bfc4b3c8a7702c53c285c2a13a4d3c7f30b69c (mode 755)
--- /dev/null
+++ tests/support/adapt-tst.t
+#!/bin/sh
+
+tmp=$0.tmp.tst
+trap "rm -f $tmp" EXIT
+cat >$tmp <<-"EOF"
+ #!/bin/sh
+ if [ -n "$D" ]
+ then
+ echo "test_1()"
+ echo "test_2()"
+ echo "test_3()"
+ else
+ echo "test_1() OK"
+ echo "test_2() OK"
+ echo "something something unexpected" >&2
+ echo "test_3() FAIL"
+ exit 1
+ fi
+EOF
+chmod +x $tmp
+
+tst=$0.tests ./assert-exercise $0 \
+ "run 3 ok 2 fail 1 error 0\n" \
+ "something something unexpected\ntest_3()\tFAIL\n" \
+ <<-EOF
+ #!/bin/sh
+ exec ../../support/adapt-tst $tmp
+ EOF
blob - /dev/null
blob + a233dc1ec26e6a1e06280008ce4935e1ccf48ffa (mode 755)
--- /dev/null
+++ support/adapt-tst
+#!/bin/sh
+#
+# This script adapts a test suite that exposes the simple report protocol of
+# test.h for use with exercise.
+#
+# Usage: adapt-tst cmd [arg ...]
+#
+# Example: Given a test suite in 'foo.tst.c' that is built into an executable
+# 'foo.tst', create the script 'foo.tests' containing the following:
+#
+# #!/bin/sh
+# exec ./adapt-tst ./foo.tst
+#
+
+cmd="$1"
+shift
+
+tmp=/tmp/adapt-tst.$$
+trap "rm -f $tmp" EXIT
+
+# initialize the counters
+run=0 ok=0 fail=0 error=0
+
+# clear the flag variables for the test executable
+unset D V K X
+
+# determine the total number of tests by performing a dry run
+D=1 "$cmd" "$@" >$tmp || exit 127
+run=$(echo $(wc -l <$tmp))
+
+# perform the tests, counting and reporting results
+echo "run $run ok $ok fail $fail error $error"
+"$cmd" "$@" >$tmp
+IFS=' '
+while read name result
+do
+ case "$result" in
+ OK) ok=$((ok + 1)) ;;
+ FAIL) fail=$((fail + 1))
+ echo "$name $result" >&2 ;;
+ *) error=$((error + 1)) ;;
+ esac
+
+ echo "run $run ok $ok fail $fail error $error"
+done <$tmp
+
+# exit 0 if and only if the counters indicate a perfect run
+[ $ok -eq $run -a $fail -eq 0 -a $error -eq 0 ]