62 lines
1.3 KiB
Bash
Executable File
62 lines
1.3 KiB
Bash
Executable File
#!/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
|