aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorRob N <[email protected]>2024-04-16 06:44:12 +1000
committerTony Hutter <[email protected]>2024-07-17 14:54:46 -0700
commitf14a62ebbe87f52993dc52b6e0f3c0aee1f6d6d2 (patch)
tree4e3945587b204562ec623ec325d58e68ffeea31a /scripts
parentdfdac38afb1f25de0b35c4b522a839fe78052aed (diff)
zts: allow running a single test by name only
Specifying a single test is kind of a hassle, because the full relative path under the test suite dir has to be included, but it's not always clear what that path even is. This change allows `-t` to take the name of a single test instead of a full path. If the value has no `/` characters, we search for a file of that name under the test root, and if found, use that as the full test path instead. Sponsored-by: Klara, Inc. Sponsored-by: Wasabi Technology, Inc. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Akash B <[email protected]> Reviewed-by: Tino Reichardt <[email protected]> Signed-off-by: Rob Norris <[email protected]> Closes #16088
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/zfs-tests.sh15
1 files changed, 13 insertions, 2 deletions
diff --git a/scripts/zfs-tests.sh b/scripts/zfs-tests.sh
index 179e24d7a..b5b3e4ab3 100755
--- a/scripts/zfs-tests.sh
+++ b/scripts/zfs-tests.sh
@@ -326,7 +326,8 @@ OPTIONS:
-d DIR Use world-writable DIR for files and loopback devices
-s SIZE Use vdevs of SIZE (default: 4G)
-r RUNFILES Run tests in RUNFILES (default: ${DEFAULT_RUNFILES})
- -t PATH Run single test at PATH relative to test suite
+ -t PATH|NAME Run single test at PATH relative to test suite,
+ or search for test by NAME
-T TAGS Comma separated list of tags (default: 'functional')
-u USER Run single test as USER (default: root)
@@ -340,6 +341,9 @@ $0 -r linux-fast
# Run a single test
$0 -t tests/functional/cli_root/zfs_bookmark/zfs_bookmark_cliargs.ksh
+# Run a single test by name
+$0 -t zfs_bookmark_cliargs
+
# Cleanup a previous run of the test suite prior to testing, run the
# default ($(echo "${DEFAULT_RUNFILES}" | sed 's/\.run//')) suite of tests and perform no cleanup on exit.
$0 -x
@@ -450,8 +454,15 @@ post_user = root
post =
outputdir = /var/tmp/test_results
EOF
- SINGLETESTDIR="${SINGLETEST%/*}"
+ if [ "$SINGLETEST" = "${SINGLETEST%/*}" ] ; then
+ NEWSINGLETEST=$(find "$STF_SUITE" -name "$SINGLETEST*" -print -quit)
+ if [ -z "$NEWSINGLETEST" ] ; then
+ fail "couldn't find test matching '$SINGLETEST'"
+ fi
+ SINGLETEST=$NEWSINGLETEST
+ fi
+ SINGLETESTDIR="${SINGLETEST%/*}"
SETUPDIR="$SINGLETESTDIR"
[ "${SETUPDIR#/}" = "$SETUPDIR" ] && SETUPDIR="$STF_SUITE/$SINGLETESTDIR"
[ -x "$SETUPDIR/setup.ksh" ] && SETUPSCRIPT="setup" || SETUPSCRIPT=