summaryrefslogtreecommitdiffstats
path: root/tools/testing
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2011-10-17 17:06:29 +0200
committerSteven Rostedt <rostedt@goodmis.org>2011-10-17 17:58:15 +0200
commita9f84424be8d12e8a84b9eac112cd1152587d437 (patch)
treed387036bbfb7cda150a3e0e1e7a778cbe1eb1364 /tools/testing
parentktest: Sort make_min_config configs by dependecies (diff)
downloadlinux-a9f84424be8d12e8a84b9eac112cd1152587d437.tar.xz
linux-a9f84424be8d12e8a84b9eac112cd1152587d437.zip
ktest: Fix parsing of config section lines
The order for some of the keywords on a section line (TEST_START or DEFAULTS) does not really matter. Simply need to remove the keyword from the line as we process it and evaluate the next keyword in the line. By removing the keywords as we find them, we do not need to keep track of where on the line they were found. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'tools/testing')
-rwxr-xr-xtools/testing/ktest/ktest.pl49
1 files changed, 31 insertions, 18 deletions
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index 2a9d04207174..d292c2d8dfe9 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -449,6 +449,7 @@ sub __read_config {
my $num_tests_set = 0;
my $skip = 0;
my $rest;
+ my $line;
my $test_case = 0;
my $if = 0;
my $if_set = 0;
@@ -465,6 +466,7 @@ sub __read_config {
my $type = $1;
$rest = $2;
+ $line = $2;
my $old_test_num;
my $old_repeat;
@@ -486,32 +488,28 @@ sub __read_config {
$default = 1;
}
- if ($rest =~ /\s+SKIP\b(.*)/) {
- $rest = $1;
+ # If SKIP is anywhere in the line, the command will be skipped
+ if ($rest =~ s/\s+SKIP\b//) {
$skip = 1;
} else {
$test_case = 1;
$skip = 0;
}
- if (!$skip) {
- if ($type eq "TEST_START") {
- if ($rest =~ /\s+ITERATE\s+(\d+)(.*)$/) {
- $repeat = $1;
- $rest = $2;
- $repeat_tests{"$test_num"} = $repeat;
- }
- } elsif ($rest =~ /\sOVERRIDE\b(.*)/) {
- # DEFAULT only
- $rest = $1;
- $override = 1;
- # Clear previous overrides
- %overrides = ();
+ if ($rest =~ s/\sELSE\b//) {
+ if (!$if) {
+ die "$name: $.: ELSE found with out matching IF section\n$_";
+ }
+ $if = 0;
+
+ if ($if_set) {
+ $skip = 1;
+ } else {
+ $skip = 0;
}
}
- if ($rest =~ /\sIF\s+(.*)/) {
- $rest = "";
+ if ($rest =~ s/\sIF\s+(.*)//) {
if (process_if($name, $1)) {
$if_set = 1;
} else {
@@ -520,9 +518,24 @@ sub __read_config {
$if = 1;
} else {
$if = 0;
+ $if_set = 0;
}
- if ($rest !~ /^\s*$/) {
+ if (!$skip) {
+ if ($type eq "TEST_START") {
+ if ($rest =~ s/\s+ITERATE\s+(\d+)//) {
+ $repeat = $1;
+ $repeat_tests{"$test_num"} = $repeat;
+ }
+ } elsif ($rest =~ s/\sOVERRIDE\b//) {
+ # DEFAULT only
+ $override = 1;
+ # Clear previous overrides
+ %overrides = ();
+ }
+ }
+
+ if (!$skip && $rest !~ /^\s*$/) {
die "$name: $.: Gargbage found after $type\n$_";
}