| #!/bin/sh |
| |
| run_test() { |
| # Clear the last results |
| rm -f "$1"/result |
| [ -x "$1"/setup ] && "$1"/setup |
| if [ -r "$1"/tlsdated-flags ]; then |
| flags=$(cat "$1"/tlsdated-flags | sed "s/@TESTDIR@/$1/g") |
| elif [ -r "$1"/test.conf ]; then |
| flags="-U -w -p -r -l -s -b -f $1/test.conf -v" |
| else |
| flags="-U -w -p -r -l -s -b -f test.conf -v" |
| fi |
| # flags are deliberately unquoted here so that they'll be interpolated |
| (test -x "$1"/input.sh && "$1"/input.sh) | |
| timeout 8 src/tlsdated $flags -- "$1"/subproc.sh \ |
| >"$1"/run-output 2>"$1"/run-err |
| [ -x "$1"/teardown ] && "$1"/teardown |
| } |
| |
| test_passed() { |
| f="$t"/result |
| test -f "$f" && grep -q ok "$f" |
| } |
| |
| total=0 |
| passed=0 |
| |
| if ! test -x src/test/emit; then |
| echo "Make sure src/test/emit has been built (make check)!" |
| exit 1 |
| fi |
| for t in tests/*; do |
| [ ! -d "$t" ] && continue |
| name="$(basename "$t")" |
| echo -n "$name: " |
| run_test "$t" |
| if test_passed "$t"; then |
| echo "ok" |
| passed=$((passed + 1)) |
| else |
| echo "failed" |
| fi |
| total=$((total + 1)) |
| done |
| echo "Passed: $passed/$total" |
| [ $passed != $total ] |
| exit $? |