diff --git a/test/units/TEST-04-JOURNAL.sh b/test/units/TEST-04-JOURNAL.sh index 9c2a033aa9..a61a765589 100755 --- a/test/units/TEST-04-JOURNAL.sh +++ b/test/units/TEST-04-JOURNAL.sh @@ -6,6 +6,4 @@ set -o pipefail # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-05-RLIMITS.sh b/test/units/TEST-05-RLIMITS.sh index 9c2a033aa9..a61a765589 100755 --- a/test/units/TEST-05-RLIMITS.sh +++ b/test/units/TEST-05-RLIMITS.sh @@ -6,6 +6,4 @@ set -o pipefail # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-13-NSPAWN.sh b/test/units/TEST-13-NSPAWN.sh index 311b64a6a0..45b105f316 100755 --- a/test/units/TEST-13-NSPAWN.sh +++ b/test/units/TEST-13-NSPAWN.sh @@ -18,6 +18,4 @@ fi # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-17-UDEV.sh b/test/units/TEST-17-UDEV.sh index 14ceebac95..36b7ae3be6 100755 --- a/test/units/TEST-17-UDEV.sh +++ b/test/units/TEST-17-UDEV.sh @@ -8,6 +8,4 @@ set -o pipefail udevadm settle -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-19-CGROUP.sh b/test/units/TEST-19-CGROUP.sh index 9c2a033aa9..a61a765589 100755 --- a/test/units/TEST-19-CGROUP.sh +++ b/test/units/TEST-19-CGROUP.sh @@ -6,6 +6,4 @@ set -o pipefail # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-22-TMPFILES.sh b/test/units/TEST-22-TMPFILES.sh index 85109a1ad5..0b00511baa 100755 --- a/test/units/TEST-22-TMPFILES.sh +++ b/test/units/TEST-22-TMPFILES.sh @@ -14,6 +14,4 @@ if systemd-detect-virt --quiet --container; then ln -s /dev/null /run/tmpfiles.d/selinux-policy.conf fi -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-23-UNIT-FILE.sh b/test/units/TEST-23-UNIT-FILE.sh index a929c8bdaa..1a503d2bab 100755 --- a/test/units/TEST-23-UNIT-FILE.sh +++ b/test/units/TEST-23-UNIT-FILE.sh @@ -7,6 +7,4 @@ set -o pipefail . "$(dirname "$0")"/test-control.sh # Note: the signal shenanigans are necessary for the Upholds= tests -run_subtests_with_signals SIGUSR1 SIGUSR2 SIGRTMIN+1 - -touch /testok +run_subtests_with_signals_and_exit SIGUSR1 SIGUSR2 SIGRTMIN+1 diff --git a/test/units/TEST-53-TIMER.sh b/test/units/TEST-53-TIMER.sh index 9c2a033aa9..a61a765589 100755 --- a/test/units/TEST-53-TIMER.sh +++ b/test/units/TEST-53-TIMER.sh @@ -6,6 +6,4 @@ set -o pipefail # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-70-TPM2.sh b/test/units/TEST-70-TPM2.sh index 9c2a033aa9..a61a765589 100755 --- a/test/units/TEST-70-TPM2.sh +++ b/test/units/TEST-70-TPM2.sh @@ -6,6 +6,4 @@ set -o pipefail # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-74-AUX-UTILS.sh b/test/units/TEST-74-AUX-UTILS.sh index 9c2a033aa9..a61a765589 100755 --- a/test/units/TEST-74-AUX-UTILS.sh +++ b/test/units/TEST-74-AUX-UTILS.sh @@ -6,6 +6,4 @@ set -o pipefail # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-81-GENERATORS.sh b/test/units/TEST-81-GENERATORS.sh index 9c2a033aa9..a61a765589 100755 --- a/test/units/TEST-81-GENERATORS.sh +++ b/test/units/TEST-81-GENERATORS.sh @@ -6,6 +6,4 @@ set -o pipefail # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/TEST-90-RESTRICT-FSACCESS.sh b/test/units/TEST-90-RESTRICT-FSACCESS.sh index 9c2a033aa9..a61a765589 100755 --- a/test/units/TEST-90-RESTRICT-FSACCESS.sh +++ b/test/units/TEST-90-RESTRICT-FSACCESS.sh @@ -6,6 +6,4 @@ set -o pipefail # shellcheck source=test/units/test-control.sh . "$(dirname "$0")"/test-control.sh -run_subtests - -touch /testok +run_subtests_and_exit diff --git a/test/units/test-control.sh b/test/units/test-control.sh index 2c93382caf..1e352c44b3 100644 --- a/test/units/test-control.sh +++ b/test/units/test-control.sh @@ -172,6 +172,31 @@ run_subtests() { _show_summary } +_finalize_subtests() { + if [[ ${#_PASSED_TESTS[@]} -eq 0 && ${#_SKIPPED_TESTS[@]} -gt 0 ]]; then + echo "All subtests skipped" | tee --append /skipped + exit "$_SUBTEST_SKIP_RC" + fi + + touch /testok + exit 0 +} + +# Run all subtests and finalize the test in one shot: exit 77 (skipped) if every subtest skipped, +# otherwise mark success (/testok) and exit. Use this ONLY for tests whose body is just subtests. +# Do NOT use it if the parent script has meaningful test content of its own. +run_subtests_and_exit() { + run_subtests + _finalize_subtests +} + +# Like run_subtests_and_exit, but propagates the given signals to the subtests (see +# run_subtests_with_signals). +run_subtests_with_signals_and_exit() { + run_subtests_with_signals "$@" + _finalize_subtests +} + # Run all test cases (i.e. functions prefixed with testcase_ in the current namespace) run_testcases() { local testcase testcases