aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing
diff options
context:
space:
mode:
Diffstat (limited to 'tools/testing')
-rwxr-xr-xtools/testing/ktest/ktest.pl55
-rw-r--r--tools/testing/ktest/sample.conf32
2 files changed, 78 insertions, 9 deletions
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index ed20d6881ec9..62de47de2b04 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -412,15 +412,16 @@ sub process_if {
412 return 1; 412 return 1;
413} 413}
414 414
415sub read_config { 415sub __read_config {
416 my ($config) = @_; 416 my ($config, $current_test_num) = @_;
417 417
418 open(IN, $config) || die "can't read file $config"; 418 my $in;
419 open($in, $config) || die "can't read file $config";
419 420
420 my $name = $config; 421 my $name = $config;
421 $name =~ s,.*/(.*),$1,; 422 $name =~ s,.*/(.*),$1,;
422 423
423 my $test_num = 0; 424 my $test_num = $$current_test_num;
424 my $default = 1; 425 my $default = 1;
425 my $repeat = 1; 426 my $repeat = 1;
426 my $num_tests_set = 0; 427 my $num_tests_set = 0;
@@ -430,7 +431,7 @@ sub read_config {
430 my $if = 0; 431 my $if = 0;
431 my $if_set = 0; 432 my $if_set = 0;
432 433
433 while (<IN>) { 434 while (<$in>) {
434 435
435 # ignore blank lines and comments 436 # ignore blank lines and comments
436 next if (/^\s*$/ || /\s*\#/); 437 next if (/^\s*$/ || /\s*\#/);
@@ -539,6 +540,33 @@ sub read_config {
539 die "$name: $.: Gargbage found after DEFAULTS\n$_"; 540 die "$name: $.: Gargbage found after DEFAULTS\n$_";
540 } 541 }
541 542
543 } elsif (/^\s*INCLUDE\s+(\S+)/) {
544
545 next if ($skip);
546
547 if (!$default) {
548 die "$name: $.: INCLUDE can only be done in default sections\n$_";
549 }
550
551 my $file = process_variables($1);
552
553 if ($file !~ m,^/,) {
554 # check the path of the config file first
555 if ($config =~ m,(.*)/,) {
556 if (-f "$1/$file") {
557 $file = "$1/$file";
558 }
559 }
560 }
561
562 if ( ! -r $file ) {
563 die "$name: $.: Can't read file $file\n$_";
564 }
565
566 if (__read_config($file, \$test_num)) {
567 $test_case = 1;
568 }
569
542 } elsif (/^\s*([A-Z_\[\]\d]+)\s*=\s*(.*?)\s*$/) { 570 } elsif (/^\s*([A-Z_\[\]\d]+)\s*=\s*(.*?)\s*$/) {
543 571
544 next if ($skip); 572 next if ($skip);
@@ -594,13 +622,26 @@ sub read_config {
594 } 622 }
595 } 623 }
596 624
597 close(IN);
598
599 if ($test_num) { 625 if ($test_num) {
600 $test_num += $repeat - 1; 626 $test_num += $repeat - 1;
601 $opt{"NUM_TESTS"} = $test_num; 627 $opt{"NUM_TESTS"} = $test_num;
602 } 628 }
603 629
630 close($in);
631
632 $$current_test_num = $test_num;
633
634 return $test_case;
635}
636
637sub read_config {
638 my ($config) = @_;
639
640 my $test_case;
641 my $test_num = 0;
642
643 $test_case = __read_config $config, \$test_num;
644
604 # make sure we have all mandatory configs 645 # make sure we have all mandatory configs
605 get_ktest_configs; 646 get_ktest_configs;
606 647
diff --git a/tools/testing/ktest/sample.conf b/tools/testing/ktest/sample.conf
index 4e8fb91fd517..ae2a93c732ac 100644
--- a/tools/testing/ktest/sample.conf
+++ b/tools/testing/ktest/sample.conf
@@ -122,8 +122,36 @@
122# ELSE 122# ELSE
123# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-64 123# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-64
124# 124#
125 125#
126 126# INCLUDE file
127#
128# The INCLUDE keyword may be used in DEFAULT sections. This will
129# read another config file and process that file as well. The included
130# file can include other files, add new test cases or default
131# statements. Config variables will be passed to these files and changes
132# to config variables will be seen by top level config files. Including
133# a file is processed just like the contents of the file was cut and pasted
134# into the top level file, except, that include files that end with
135# TEST_START sections will have that section ended at the end of
136# the include file. That is, an included file is included followed
137# by another DEFAULT keyword.
138#
139# Unlike other files referenced in this config, the file path does not need
140# to be absolute. If the file does not start with '/', then the directory
141# that the current config file was located in is used. If no config by the
142# given name is found there, then the current directory is searched.
143#
144# INCLUDE myfile
145# DEFAULT
146#
147# is the same as:
148#
149# INCLUDE myfile
150#
151# Note, if the include file does not contain a full path, the file is
152# searched first by the location of the original include file, and then
153# by the location that ktest.pl was executed in.
154#
127 155
128#### Config variables #### 156#### Config variables ####
129# 157#