osmo-bsc/tests/handover/handover_tests.sh

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