From: Thomas Haller <thaller@redhat.com>
To: NetFilter <netfilter-devel@vger.kernel.org>
Cc: Thomas Haller <thaller@redhat.com>
Subject: [PATCH nft v3 01/11] tests/shell: rework command line parsing in "run-tests.sh"
Date: Mon, 4 Sep 2023 15:48:03 +0200 [thread overview]
Message-ID: <20230904135135.1568180-2-thaller@redhat.com> (raw)
In-Reply-To: <20230904135135.1568180-1-thaller@redhat.com>
Parse the arguments in a loop, so that their order does not matter.
Also, soon more command line arguments will be added, and this way of
parsing seems more maintainable and flexible.
Currently this is still after the is-root check and after unshare. That
will be addressed later.
Signed-off-by: Thomas Haller <thaller@redhat.com>
---
tests/shell/run-tests.sh | 95 +++++++++++++++++++++++++++-------------
1 file changed, 65 insertions(+), 30 deletions(-)
diff --git a/tests/shell/run-tests.sh b/tests/shell/run-tests.sh
index b66ef4fa4d1f..ae8c6d934dcf 100755
--- a/tests/shell/run-tests.sh
+++ b/tests/shell/run-tests.sh
@@ -1,10 +1,5 @@
#!/bin/bash
-# Configuration
-TESTDIR="./$(dirname $0)/testcases"
-SRC_NFT="$(dirname $0)/../../src/nft"
-DIFF=$(which diff)
-
msg_error() {
echo "E: $1 ..." >&2
exit 1
@@ -18,6 +13,29 @@ msg_info() {
echo "I: $1"
}
+usage() {
+ echo " $0 [OPTIONS]"
+ 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
+ echo "ENVIRONMENT VARIABLES:"
+ echo " NFT=<PATH> : Path to nft executable"
+ echo " VERBOSE=*|y : Enable verbose output"
+ echo " DUMPGEN=*|y : Regenerate dump files"
+ echo " VALGRIND=*|y : Run \$NFT in valgrind"
+ echo " KMEMLEAK=*|y : Check for kernel memleaks"
+}
+
+# Configuration
+TESTDIR="./$(dirname $0)/testcases"
+SRC_NFT="$(dirname $0)/../../src/nft"
+DIFF=$(which diff)
+
if [ "$(id -u)" != "0" ] ; then
msg_error "this requires root!"
fi
@@ -31,6 +49,48 @@ if [ "${1}" != "run" ]; then
fi
shift
+VERBOSE="$VERBOSE"
+DUMPGEN="$DUMPGEN"
+VALGRIND="$VALGRIND"
+KMEMLEAK="$KMEMLEAK"
+
+TESTS=()
+
+while [ $# -gt 0 ] ; do
+ A="$1"
+ shift
+ case "$A" in
+ -v)
+ VERBOSE=y
+ ;;
+ -g)
+ DUMPGEN=y
+ ;;
+ -V)
+ VALGRIND=y
+ ;;
+ -K)
+ KMEMLEAK=y
+ ;;
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ --)
+ TESTS+=( "$@" )
+ shift $#
+ ;;
+ *)
+ # Any unrecognized option is treated as a test name, and also
+ # enable verbose tests.
+ TESTS+=( "$A" )
+ VERBOSE=y
+ ;;
+ esac
+done
+
+SINGLE="${TESTS[*]}"
+
[ -z "$NFT" ] && NFT=$SRC_NFT
${NFT} > /dev/null 2>&1
ret=$?
@@ -59,31 +119,6 @@ if [ ! -x "$DIFF" ] ; then
DIFF=true
fi
-if [ "$1" == "-v" ] ; then
- VERBOSE=y
- shift
-fi
-
-if [ "$1" == "-g" ] ; then
- DUMPGEN=y
- shift
-fi
-
-if [ "$1" == "-V" ] ; then
- VALGRIND=y
- shift
-fi
-
-if [ "$1" == "-K" ]; then
- KMEMLEAK=y
- shift
-fi
-
-for arg in "$@"; do
- SINGLE+=" $arg"
- VERBOSE=y
-done
-
kernel_cleanup() {
$NFT flush ruleset
$MODPROBE -raq \
--
2.41.0
next prev parent reply other threads:[~2023-09-04 13:52 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-04 13:48 [PATCH nft v3 00/11] tests/shell: allow running tests as Thomas Haller
2023-09-04 13:48 ` Thomas Haller [this message]
2023-09-04 13:48 ` [PATCH nft v3 02/11] tests/shell: rework finding tests and add "--list-tests" option Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 03/11] tests/shell: check test names before start and support directories Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 04/11] tests/shell: export NFT_TEST_BASEDIR and NFT_TEST_TMPDIR for tests Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 05/11] tests/shell: run each test in separate namespace and allow rootless Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 06/11] tests/shell: interpret an exit code of 77 from scripts as "skipped" Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 07/11] tests/shell: support --keep-logs option (NFT_TEST_KEEP_LOGS=y) to preserve test output Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 08/11] tests/shell: move the dump diff handling inside "test-wrapper.sh" Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 09/11] tests/shell: rework printing of test results Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 10/11] tests/shell: move taint check to "test-wrapper.sh" Thomas Haller
2023-09-04 13:48 ` [PATCH nft v3 11/11] tests/shell: support running tests in parallel Thomas Haller
2023-09-05 11:09 ` [PATCH nft v3 00/11] tests/shell: allow running tests as Florian Westphal
2023-09-05 12:03 ` Thomas Haller
2023-09-05 13:48 ` Florian Westphal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230904135135.1568180-2-thaller@redhat.com \
--to=thaller@redhat.com \
--cc=netfilter-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).