Commit 22c37a9a authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Steven Rostedt

ktest: Allow tests to undefine default options

Tests can set options that override the default ones. But if a test
tries to undefine a default option, it is simply ignored and the
default option stays as is.

For example, if you want to have a test that defines no MIN_CONFIG
then the test should be able to do that with:

   TEST_START
   MIN_CONFIG =

Which should make MIN_CONFIG not defined for that test. But the way
the code currently works, undefined options in tests are dropped.
This is because the NULL options are evaluated during the reading of
the config file and since one can disable default options in the default
section with this method, it is evaluated there (the option turns to a
undef). But undef options in the test section mean to use the default
option.

To fix this, keep the empty string in the option during the reading
of the config file, and then evaluate it when running the test. This
will allow tests to null out default options.
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 9972fc0b
...@@ -684,11 +684,8 @@ sub set_value { ...@@ -684,11 +684,8 @@ sub set_value {
} }
${$overrides}{$lvalue} = $prvalue; ${$overrides}{$lvalue} = $prvalue;
} }
if ($rvalue =~ /^\s*$/) {
delete $opt{$lvalue}; $opt{$lvalue} = $prvalue;
} else {
$opt{$lvalue} = $prvalue;
}
} }
sub set_eval { sub set_eval {
...@@ -3947,12 +3944,22 @@ for (my $i = 0, my $repeat = 1; $i <= $opt{"NUM_TESTS"}; $i += $repeat) { ...@@ -3947,12 +3944,22 @@ for (my $i = 0, my $repeat = 1; $i <= $opt{"NUM_TESTS"}; $i += $repeat) {
} }
} }
sub option_defined {
my ($option) = @_;
if (defined($opt{$option}) && $opt{$option} !~ /^\s*$/) {
return 1;
}
return 0;
}
sub __set_test_option { sub __set_test_option {
my ($name, $i) = @_; my ($name, $i) = @_;
my $option = "$name\[$i\]"; my $option = "$name\[$i\]";
if (defined($opt{$option})) { if (option_defined($option)) {
return $opt{$option}; return $opt{$option};
} }
...@@ -3960,13 +3967,13 @@ sub __set_test_option { ...@@ -3960,13 +3967,13 @@ sub __set_test_option {
if ($i >= $test && if ($i >= $test &&
$i < $test + $repeat_tests{$test}) { $i < $test + $repeat_tests{$test}) {
$option = "$name\[$test\]"; $option = "$name\[$test\]";
if (defined($opt{$option})) { if (option_defined($option)) {
return $opt{$option}; return $opt{$option};
} }
} }
} }
if (defined($opt{$name})) { if (option_defined($name)) {
return $opt{$name}; return $opt{$name};
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment