summaryrefslogtreecommitdiffstats
path: root/tests/shell/run-tests.sh
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-09-06 13:52:05 +0200
committerFlorian Westphal <fw@strlen.de>2023-09-07 19:35:20 +0200
commite69be63ca99b472872c2a213485c595d444cf0af (patch)
tree71ee69a3539606ec36da401142ea384c946ac3c9 /tests/shell/run-tests.sh
parentdfe443ff3db2ff886d519f4704c270627a9cff5a (diff)
tests/shell: rework finding tests and add "--list-tests" option
Cleanup finding the test files. Also add a "--list-tests" option to see which tests are found and would run. Also get rid of the FIND="$(which find)" detection. Which system doesn't have a working find? Also, we can just fail when we try to use find, and don't need a check first. This is still after "unshare", which will be addressed next. Signed-off-by: Thomas Haller <thaller@redhat.com> Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'tests/shell/run-tests.sh')
-rwxr-xr-xtests/shell/run-tests.sh58
1 files changed, 30 insertions, 28 deletions
diff --git a/tests/shell/run-tests.sh b/tests/shell/run-tests.sh
index a1576493..5f526dd8 100755
--- a/tests/shell/run-tests.sh
+++ b/tests/shell/run-tests.sh
@@ -14,14 +14,18 @@ msg_info() {
}
usage() {
- echo " $0 [OPTIONS]"
+ echo " $0 [OPTIONS] [TESTS...]"
echo
echo "OPTIONS:"
- echo " -h|--help : Print usage."
- echo " -v : Sets VERBOSE=y."
- echo " -g : Sets DUMPGEN=y."
- echo " -V : Sets VALGRIND=y."
- echo " -K : Sets KMEMLEAK=y."
+ echo " -h|--help : Print usage."
+ echo " -L|--list-tests : List test names and quit."
+ echo " -v : Sets VERBOSE=y. Specifying tests without \"--\" enables verbose mode."
+ echo " -g : Sets DUMPGEN=y."
+ echo " -V : Sets VALGRIND=y."
+ echo " -K : Sets KMEMLEAK=y."
+ echo " -- : Separate options from tests."
+ echo " [TESTS...] : Other options are treated as test names,"
+ echo " that is, executables that are run by the runner."
echo
echo "ENVIRONMENT VARIABLES:"
echo " NFT=<CMD> : Path to nft executable. Will be called as \`\$NFT [...]\` so"
@@ -35,8 +39,8 @@ usage() {
}
# Configuration
-TESTDIR="./$(dirname $0)/testcases"
-SRC_NFT="$(dirname $0)/../../src/nft"
+BASEDIR="$(dirname "$0")"
+SRC_NFT="$BASEDIR/../../src/nft"
DIFF=$(which diff)
if [ "$(id -u)" != "0" ] ; then
@@ -56,6 +60,7 @@ VERBOSE="$VERBOSE"
DUMPGEN="$DUMPGEN"
VALGRIND="$VALGRIND"
KMEMLEAK="$KMEMLEAK"
+DO_LIST_TESTS=
TESTS=()
@@ -79,6 +84,9 @@ while [ $# -gt 0 ] ; do
usage
exit 0
;;
+ -L|--list-tests)
+ DO_LIST_TESTS=y
+ ;;
--)
TESTS+=( "$@" )
shift $#
@@ -92,7 +100,19 @@ while [ $# -gt 0 ] ; do
esac
done
-SINGLE="${TESTS[*]}"
+find_tests() {
+ find "$1" -type f -executable | sort
+}
+
+if [ "${#TESTS[@]}" -eq 0 ] ; then
+ TESTS=( $(find_tests "$BASEDIR/testcases/") )
+ test "${#TESTS[@]}" -gt 0 || msg_error "Could not find tests"
+fi
+
+if [ "$DO_LIST_TESTS" = y ] ; then
+ printf '%s\n' "${TESTS[@]}"
+ exit 0
+fi
[ -z "$NFT" ] && NFT=$SRC_NFT
${NFT} > /dev/null 2>&1
@@ -103,15 +123,6 @@ else
msg_info "using nft command: ${NFT}"
fi
-if [ ! -d "$TESTDIR" ] ; then
- msg_error "missing testdir $TESTDIR"
-fi
-
-FIND="$(which find)"
-if [ ! -x "$FIND" ] ; then
- msg_error "no find binary found"
-fi
-
MODPROBE="$(which modprobe)"
if [ ! -x "$MODPROBE" ] ; then
msg_error "no modprobe binary found"
@@ -146,14 +157,6 @@ kernel_cleanup() {
nft_xfrm
}
-find_tests() {
- if [ ! -z "$SINGLE" ] ; then
- echo $SINGLE
- return
- fi
- ${FIND} ${TESTDIR} -type f -executable | sort
-}
-
printscript() { # (cmd, tmpd)
cat <<EOF
#!/bin/bash
@@ -251,8 +254,7 @@ check_kmemleak()
check_taint
-for testfile in $(find_tests)
-do
+for testfile in "${TESTS[@]}" ; do
read taint < /proc/sys/kernel/tainted
kernel_cleanup