diff options
Diffstat (limited to 'tests/handover/handover_tests.sh')
-rwxr-xr-x | tests/handover/handover_tests.sh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/handover/handover_tests.sh b/tests/handover/handover_tests.sh new file mode 100755 index 000000000..4be0c1018 --- /dev/null +++ b/tests/handover/handover_tests.sh @@ -0,0 +1,61 @@ +#!/bin/sh +set -e +tests_dir="${1:-.}" +build_dir="${2:-.}" +update="$3" +test -d "$tests_dir" +test -d "$build_dir" + +if [ -n "$update" -a "x$update" != "x-u" -a "x$update" != "x-U" ]; then + echo "unknown argument: $update" + exit 1 +fi + +one_test() { + test_path="$1" + test_name="$(basename "$test_path")" + got_out="$(mktemp "tmp.$test_name.stdout.XXXXX")" + got_err="$(mktemp "tmp.$test_name.stderr.XXXXX")" + set +e + "$build_dir"/handover_test "$test_path" > "$got_out" 2> "$got_err" + rc=$? + expect_out="$test_path.ok" + expect_err="$test_path.err" + if [ "x$rc" = "x0" -a "x$update" = "x-U" ]; then + cp "$got_out" "$expect_out" + cp "$got_err" "$expect_err" + else + if [ -f "$expect_out" ]; then + diff -u "$expect_out" "$got_out" >&2 + fi + if [ -f "$expect_err" ]; then + diff -u "$expect_err" "$got_err" >&2 + fi + fi + rm "$got_out" + rm "$got_err" + set -e + return $rc +} + +results="$(mktemp "tmp.handover_test_results.XXXXX")" +for test_path in "$tests_dir"/test*.ho_vty ; do + test_name="$(basename "$test_path")" + if one_test "$test_path"; then + echo "pass $test_name" >> "$results" + else + echo "FAIL $test_name" >> "$results" + fi +done +set +e +cat "$results" +failed="$(grep FAIL "$results")" +if [ -z "$failed" -a "x$update" != "x" ]; then + cp "$results" "$tests_dir"/handover_tests.ok +fi +rm "$results" +if [ -n "$failed" ]; then + echo "tests failed" + exit 1 +fi +exit 0 |