Skip to content

Commit a2de57a

Browse files
rbmarliererostedt
authored andcommitted
ktest: Honor empty per-test option overrides
A per-test override can clear an inherited default option by assigning an empty value, but __set_test_option() still used option_defined() to decide whether a per-test key existed. That turned an empty per-test assignment back into "fall back to the default", so tests still could not clear inherited settings. For example: DEFAULTS (...) LOG_FILE = /tmp/ktest-empty-override.log CLEAR_LOG = 1 ADD_CONFIG = /tmp/.config TEST_START TEST_TYPE = build BUILD_TYPE = nobuild ADD_CONFIG = This would run the test with ADD_CONFIG[1] = /tmp/.config Fix by checking whether the per-test key exists before falling back. If it does exist but is empty, treat it as unset for that test and stop the fallback chain there. 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-4-565d412f4925@suse.com Fixes: 22c37a9 ("ktest: Allow tests to undefine default options") Signed-off-by: Ricardo B. Marlière <rbm@suse.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
1 parent a2706c6 commit a2de57a

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

tools/testing/ktest/ktest.pl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4191,15 +4191,17 @@ sub __set_test_option {
41914191

41924192
my $option = "$name\[$i\]";
41934193

4194-
if (option_defined($option)) {
4194+
if (exists($opt{$option})) {
4195+
return undef if (!option_defined($option));
41954196
return $opt{$option};
41964197
}
41974198

41984199
foreach my $test (keys %repeat_tests) {
41994200
if ($i >= $test &&
42004201
$i < $test + $repeat_tests{$test}) {
42014202
$option = "$name\[$test\]";
4202-
if (option_defined($option)) {
4203+
if (exists($opt{$option})) {
4204+
return undef if (!option_defined($option));
42034205
return $opt{$option};
42044206
}
42054207
}

0 commit comments

Comments
 (0)