[LTP] [PATCH v2 3/7] testcases/lib/run_tests.sh: Check expected results
Petr Vorel
pvorel@suse.cz
Tue Dec 10 23:57:49 CET 2024
This verification helps 1) see if anything broke 2) be able to run in CI.
Also:
1) Allow to run tests outside of the test directory (call just by
relative PATH).
2) Allow to pass build directory (useful for out of tree build).
Reviewed-by: Li Wang <liwang@redhat.com>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
Changes v1->v2:
* GitHub Actions workaround removed (not needed)
testcases/lib/run_tests.sh | 118 +++++++++++++++++++++++++++++++------
1 file changed, 99 insertions(+), 19 deletions(-)
diff --git a/testcases/lib/run_tests.sh b/testcases/lib/run_tests.sh
index 40d415e6c4..0abca2f3ca 100755
--- a/testcases/lib/run_tests.sh
+++ b/testcases/lib/run_tests.sh
@@ -1,32 +1,112 @@
#!/bin/sh
+# Copyright (c) 2024 Petr Vorel <pvorel@suse.cz>
-testdir=$(realpath $(dirname $0))
-export PATH="$PATH:$testdir:$testdir/tests/"
+TESTS_PASS="
+shell_loader.sh
+shell_loader_all_filesystems.sh
+shell_loader_c_child.sh
+shell_loader_filesystems.sh
+shell_loader_kconfigs.sh
+shell_loader_supported_archs.sh
+shell_loader_tcnt.sh
+shell_test01
+shell_test02
+shell_test03
+shell_test04
+shell_test05"
-for i in `seq -w 01 06`; do
- echo
- echo "*** Running shell_test$i ***"
- echo
- ./tests/shell_test$i
-done
+TESTS_FAIL="shell_loader_tags.sh"
+
+TESTS_TBROK="
+shell_loader_invalid_block.sh
+shell_loader_invalid_metadata.sh
+shell_loader_no_metadata.sh
+shell_loader_wrong_metadata.sh"
+
+TESTS_TCONF="shell_test06"
+
+FAIL=
-for i in shell_loader.sh shell_loader_all_filesystems.sh shell_loader_no_metadata.sh \
- shell_loader_wrong_metadata.sh shell_loader_invalid_metadata.sh\
- shell_loader_supported_archs.sh shell_loader_filesystems.sh\
- shell_loader_tcnt.sh shell_loader_kconfigs.sh shell_loader_tags.sh \
- shell_loader_invalid_block.sh shell_loader_c_child.sh; do
- echo
- echo "*** Running $i ***"
- echo
- $i
+srcdir="$(realpath $(dirname $0))"
+builddir="$srcdir"
+
+usage()
+{
+ cat << EOF
+Usage: $0 [-b DIR ] [-s TESTS]
+-b DIR build directory (required for out-of-tree build)
+-h print this help
+EOF
+}
+
+while getopts b:h opt; do
+ case $opt in
+ 'h') usage; exit 0;;
+ 'b')
+ builddir="$OPTARG/testcases/lib/"
+ if [ ! -d "$builddir" ]; then
+ echo "directory '$builddir' does not exist!" >&2
+ exit 1
+ fi
+ ;;
+ *) usage; runtest_brk TBROK "Error: invalid option";;
+ esac
done
+# srcdir is for *.sh, builddir for *.c
+export PATH="$PATH:$srcdir:$builddir:$srcdir/tests/:$builddir/tests/"
+
+
+tst_mask2flag()
+{
+ case "$1" in
+ 0) echo TPASS;;
+ 1) echo TFAIL;;
+ 2) echo TBROK;;
+ 4) echo TWARN;;
+ 16) echo TINFO;;
+ 32) echo TCONF;;
+ esac
+}
+
+run_tests()
+{
+ local exp="$1"
+ local test rc
+ shift
+
+ for test in "$@"; do
+ printf "\n*** Running '$test' (exp: $(tst_mask2flag $exp)) ***\n"
+ $test
+ rc=$?
+ if [ "$rc" = 127 ]; then
+ echo "Test '$test' not found, maybe out-of-tree build and unset builddir?" >&2
+ exit 1
+ elif [ "$rc" != "$exp" ]; then
+ FAIL="$FAIL\n* $test ($(tst_mask2flag $rc), exp: $(tst_mask2flag $exp))"
+ fi
+ done
+}
+
+run_tests 0 $TESTS_PASS
+run_tests 32 $TESTS_TCONF
+
echo
echo "*** Testing LTP test -h option ***"
echo
-shell_loader.sh -h
+run_tests 0 "shell_loader.sh -h"
echo
echo "*** Testing LTP test -i option ***"
echo
-shell_loader.sh -i 2
+run_tests 0 "shell_loader.sh -i 2"
+
+echo
+echo "***** RESULTS *****"
+
+if [ "$FAIL" ]; then
+ printf "Failed tests:$FAIL\n"
+ exit 1
+fi
+
+echo "All tests passed"
--
2.45.2
More information about the ltp
mailing list