]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: allow running only specified subtests/testcases
authorFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 5 Jun 2023 08:47:21 +0000 (10:47 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 5 Jun 2023 13:58:37 +0000 (15:58 +0200)
Useful when debugging, e.g.:

make -C test/TEST-74-AUX-UTILS clean setup run TEST_MATCH_SUBTEST=run

Resolves: #27914

test/README.testsuite
test/test-functions
test/units/test-control.sh

index 695cce15aabb64bd2f0fa5703a59070dfbeca1d0..c0f1a2b102f2863eb5077218395a739e30f79fee 100644 (file)
@@ -98,6 +98,13 @@ INTERACTIVE_DEBUG=1
     (e.g. by setting a usable default terminal, suppressing the shutdown after
     the test, etc.)
 
+TEST_MATCH_SUBTEST=subtest
+    If the test makes use of `run_subtests` use this variable to provide
+    a POSIX extended regex to run only subtests matching the expression
+
+TEST_MATCH_TESTCASE=testcase
+    Same as $TEST_MATCH_SUBTEST but for subtests that make use of `run_testcases`
+
 The kernel and initrd can be specified with $KERNEL_BIN and $INITRD. (Fedora's
 or Debian's default kernel path and initrd are used by default.)
 
index 250217790833312dd35bca46617f8f556ff94aea..4df6184d0096b8e6ef32f5c86ff1d8f515f193c4 100644 (file)
@@ -490,6 +490,8 @@ run_qemu() {
         "systemd.unit=testsuite.target"
         "systemd.wants=testsuite-$1.service"
         "noresume"
+        ${TEST_MATCH_SUBTEST:+"systemd.setenv=TEST_MATCH_SUBTEST=$TEST_MATCH_SUBTEST"}
+        ${TEST_MATCH_TESTCASE:+"systemd.setenv=TEST_MATCH_TESTCASE=$TEST_MATCH_TESTCASE"}
     )
 
     if ! get_bool "$INTERACTIVE_DEBUG"; then
@@ -567,6 +569,8 @@ run_nspawn() {
         "$PATH_TO_INIT"
         "systemd.unit=testsuite.target"
         "systemd.wants=testsuite-$2.service"
+        ${TEST_MATCH_SUBTEST:+"systemd.setenv=TEST_MATCH_SUBTEST=$TEST_MATCH_SUBTEST"}
+        ${TEST_MATCH_TESTCASE:+"systemd.setenv=TEST_MATCH_TESTCASE=$TEST_MATCH_TESTCASE"}
     )
 
     if ! get_bool "$INTERACTIVE_DEBUG"; then
index cd7048ae97c5b2896b9c375c5536421fb823a099..2760acd34fbf120de2fbaf8ae7f5f94df22feadc 100644 (file)
@@ -118,6 +118,11 @@ run_subtests() {
     fi
 
     for subtest in "${subtests[@]}"; do
+        if [[ -n "${TEST_MATCH_SUBTEST:-}" ]] && ! [[ "$subtest" =~ $TEST_MATCH_SUBTEST ]]; then
+            echo "Skipping $subtest (not matching '$TEST_MATCH_SUBTEST')"
+            continue
+        fi
+
         : "--- $subtest BEGIN ---"
         "./$subtest" && _PASSED_TESTS+=("$subtest") || _FAILED_TESTS+=("$subtest")
         : "--- $subtest END ---"
@@ -139,6 +144,11 @@ run_testcases() {
     fi
 
     for testcase in "${testcases[@]}"; do
+        if [[ -n "${TEST_MATCH_TESTCASE:-}" ]] && ! [[ "$testcase" =~ $TEST_MATCH_TESTCASE ]]; then
+            echo "Skipping $testcase (not matching '$TEST_MATCH_TESTCASE')"
+            continue
+        fi
+
         : "+++ $testcase BEGIN +++"
         # Note: the subshell here is used purposefully, otherwise we might
         #       unexpectedly inherit a RETURN trap handler from the called