Skip to content

Commit

Permalink
ktest: Allow a test option to use its default option
Browse files Browse the repository at this point in the history
Options are allowed to use other options, for example:

  LOG_FILE = ${OUTPUT_DIR}/${MACHINE}.log

where the option LOG_FILE used the options OUTPUT_DIR and MACHINE.

But if a test option were to use a default option, it will not get
substituted:

  OUTPUT_DIR = ${THIS_DIR}/${MACHINE}

  TEST_START
  OUTPUT_DIR = ${OUTPUT_DIR}/t1

For the above test, OUTPUT_DIR will stay literally "${OUTPUT_DIR}/t1"
and not be converted to "${THIS_DIR}/${MACHINE}/t1". When the test runs,
it will pass the ${OUTPUT_DIR} to the shell, which would probaly
interpret it as "", and the output directory will end up as "/t1".

Change the code where if a test option has its own option name in
its defined field, and a default option exists, then substitute the
default option in its place.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt (Red Hat) committed Jan 31, 2013
1 parent 3527568 commit 04262be
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions tools/testing/ktest/ktest.pl
Original file line number Diff line number Diff line change
Expand Up @@ -1074,7 +1074,7 @@ sub read_config {
}

sub __eval_option {
my ($option, $i) = @_;
my ($name, $option, $i) = @_;

# Add space to evaluate the character before $
$option = " $option";
Expand Down Expand Up @@ -1106,7 +1106,11 @@ sub __eval_option {
my $o = "$var\[$i\]";
my $parento = "$var\[$parent\]";

if (defined($opt{$o})) {
# If a variable contains itself, use the default var
if (($var eq $name) && defined($opt{$var})) {
$o = $opt{$var};
$retval = "$retval$o";
} elsif (defined($opt{$o})) {
$o = $opt{$o};
$retval = "$retval$o";
} elsif ($repeated && defined($opt{$parento})) {
Expand All @@ -1130,7 +1134,7 @@ sub __eval_option {
}

sub eval_option {
my ($option, $i) = @_;
my ($name, $option, $i) = @_;

my $prev = "";

Expand All @@ -1146,7 +1150,7 @@ sub eval_option {
"Check for recursive variables\n";
}
$prev = $option;
$option = __eval_option($option, $i);
$option = __eval_option($name, $option, $i);
}

return $option;
Expand Down Expand Up @@ -3683,7 +3687,7 @@ sub make_min_config {
read_config $ktest_config;

if (defined($opt{"LOG_FILE"})) {
$opt{"LOG_FILE"} = eval_option($opt{"LOG_FILE"}, -1);
$opt{"LOG_FILE"} = eval_option("LOG_FILE", $opt{"LOG_FILE"}, -1);
}

# Append any configs entered in manually to the config file.
Expand Down Expand Up @@ -3760,7 +3764,7 @@ sub set_test_option {
my $option = __set_test_option($name, $i);
return $option if (!defined($option));

return eval_option($option, $i);
return eval_option($name, $option, $i);
}

# First we need to do is the builds
Expand Down

0 comments on commit 04262be

Please sign in to comment.