]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ktest: Add PRE_KTEST_DIE for PRE_KTEST failures
authorRicardo B. Marlière <rbm@suse.com>
Sat, 7 Mar 2026 22:08:02 +0000 (19:08 -0300)
committerSteven Rostedt <rostedt@goodmis.org>
Mon, 9 Mar 2026 14:32:08 +0000 (10:32 -0400)
PRE_KTEST runs before the first test, but its return status is currently
ignored. A failing setup hook can leave the rest of the run executing in a
partially initialized environment.

Add PRE_KTEST_DIE so PRE_KTEST can fail the run in the same way
PRE_BUILD_DIE and PRE_TEST_DIE already can. Keep the default behavior
unchanged when the new option is not set.

Cc: John Hawley <warthog9@eaglescrag.net>
Cc: Andrea Righi <arighi@nvidia.com>
Cc: Marcos Paulo de Souza <mpdesouza@suse.com>
Cc: Matthieu Baerts <matttbe@kernel.org>
Cc: Fernando Fernandez Mancera <fmancera@suse.de>
Cc: Pedro Falcato <pfalcato@suse.de>
Link: https://patch.msgid.link/20260307-ktest-fixes-v1-7-565d412f4925@suse.com
Signed-off-by: Ricardo B. Marlière <rbm@suse.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
tools/testing/ktest/ktest.pl
tools/testing/ktest/sample.conf

index bd2e2311884c4cd635a1fca4b19264d20cd4cdef..b018b937e0286a518526bf2f40e9474a6a70e28f 100755 (executable)
@@ -101,6 +101,7 @@ my $build_type;
 my $build_options;
 my $final_post_ktest;
 my $pre_ktest;
+my $pre_ktest_die;
 my $post_ktest;
 my $pre_test;
 my $pre_test_die;
@@ -283,6 +284,7 @@ my %option_map = (
     "BUILD_DIR"                        => \$builddir,
     "TEST_TYPE"                        => \$test_type,
     "PRE_KTEST"                        => \$pre_ktest,
+    "PRE_KTEST_DIE"            => \$pre_ktest_die,
     "POST_KTEST"               => \$post_ktest,
     "PRE_TEST"                 => \$pre_test,
     "PRE_TEST_DIE"             => \$pre_test_die,
@@ -4506,7 +4508,11 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
     if ($i == 1) {
        if (defined($pre_ktest)) {
            doprint "\n";
-           run_command $pre_ktest;
+           my $ret = run_command $pre_ktest;
+           if (!$ret && defined($pre_ktest_die) &&
+               $pre_ktest_die) {
+               dodie "failed to pre_ktest\n";
+           }
        }
        if ($email_when_started) {
            my $name = get_test_name;
index 9c4c449a8f3ea9b2634e5b74e0b31e777dcc39f8..b6e439ef511b1b5a1ae7ecf351c1aa4a69f902bb 100644 (file)
 #
 # default (undefined)
 #PRE_KTEST = ${SSH} ~/set_up_test
+#
+# To specify if the test should fail if PRE_KTEST fails,
+# PRE_KTEST_DIE needs to be set to 1. Otherwise the PRE_KTEST
+# result is ignored.
+# (default 0)
+#PRE_KTEST_DIE = 1
 
 # If you want to execute some command after all the tests have
 # completed, you can set this option. Note, it can be set as a