|
@@ -2019,7 +2019,7 @@ for (my $i = 0, my $repeat = 1; $i <= $opt{"NUM_TESTS"}; $i += $repeat) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-sub set_test_option {
|
|
|
+sub __set_test_option {
|
|
|
my ($name, $i) = @_;
|
|
|
|
|
|
my $option = "$name\[$i\]";
|
|
@@ -2045,6 +2045,72 @@ sub set_test_option {
|
|
|
return undef;
|
|
|
}
|
|
|
|
|
|
+sub eval_option {
|
|
|
+ my ($option, $i) = @_;
|
|
|
+
|
|
|
+ # Add space to evaluate the character before $
|
|
|
+ $option = " $option";
|
|
|
+ my $retval = "";
|
|
|
+
|
|
|
+ while ($option =~ /(.*?[^\\])\$\{(.*?)\}(.*)/) {
|
|
|
+ my $start = $1;
|
|
|
+ my $var = $2;
|
|
|
+ my $end = $3;
|
|
|
+
|
|
|
+ # Append beginning of line
|
|
|
+ $retval = "$retval$start";
|
|
|
+
|
|
|
+ # If the iteration option OPT[$i] exists, then use that.
|
|
|
+ # otherwise see if the default OPT (without [$i]) exists.
|
|
|
+
|
|
|
+ my $o = "$var\[$i\]";
|
|
|
+
|
|
|
+ if (defined($opt{$o})) {
|
|
|
+ $o = $opt{$o};
|
|
|
+ $retval = "$retval$o";
|
|
|
+ } elsif (defined($opt{$var})) {
|
|
|
+ $o = $opt{$var};
|
|
|
+ $retval = "$retval$o";
|
|
|
+ } else {
|
|
|
+ $retval = "$retval\$\{$var\}";
|
|
|
+ }
|
|
|
+
|
|
|
+ $option = $end;
|
|
|
+ }
|
|
|
+
|
|
|
+ $retval = "$retval$option";
|
|
|
+
|
|
|
+ $retval =~ s/^ //;
|
|
|
+
|
|
|
+ return $retval;
|
|
|
+}
|
|
|
+
|
|
|
+sub set_test_option {
|
|
|
+ my ($name, $i) = @_;
|
|
|
+
|
|
|
+ my $option = __set_test_option($name, $i);
|
|
|
+ return $option if (!defined($option));
|
|
|
+
|
|
|
+ my $prev = "";
|
|
|
+
|
|
|
+ # Since an option can evaluate to another option,
|
|
|
+ # keep iterating until we do not evaluate any more
|
|
|
+ # options.
|
|
|
+ my $r = 0;
|
|
|
+ while ($prev ne $option) {
|
|
|
+ # Check for recursive evaluations.
|
|
|
+ # 100 deep should be more than enough.
|
|
|
+ if ($r++ > 100) {
|
|
|
+ die "Over 100 evaluations accurred with $name\n" .
|
|
|
+ "Check for recursive variables\n";
|
|
|
+ }
|
|
|
+ $prev = $option;
|
|
|
+ $option = eval_option($option, $i);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $option;
|
|
|
+}
|
|
|
+
|
|
|
# First we need to do is the builds
|
|
|
for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) {
|
|
|
|