From: Steven Rostedt <rostedt@goodmis.org>
To: linux-kernel@vger.kernel.org
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH 11/21] ktest: Add INCLUDE keyword to include other config files
Date: Fri, 28 Oct 2011 07:16:09 -0400 [thread overview]
Message-ID: <20111028112024.551423741@goodmis.org> (raw)
In-Reply-To: 20111028111558.173726794@goodmis.org
[-- Attachment #1: Type: text/plain, Size: 4231 bytes --]
From: Steven Rostedt <srostedt@redhat.com>
Have the reading of the config file allow reading of other config
files using the INCLUDE keyword. This allows multiple config files
to share config options.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
tools/testing/ktest/ktest.pl | 55 ++++++++++++++++++++++++++++++++++-----
tools/testing/ktest/sample.conf | 32 +++++++++++++++++++++-
2 files changed, 78 insertions(+), 9 deletions(-)
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index ed20d68..62de47d 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -412,15 +412,16 @@ sub process_if {
return 1;
}
-sub read_config {
- my ($config) = @_;
+sub __read_config {
+ my ($config, $current_test_num) = @_;
- open(IN, $config) || die "can't read file $config";
+ my $in;
+ open($in, $config) || die "can't read file $config";
my $name = $config;
$name =~ s,.*/(.*),$1,;
- my $test_num = 0;
+ my $test_num = $$current_test_num;
my $default = 1;
my $repeat = 1;
my $num_tests_set = 0;
@@ -430,7 +431,7 @@ sub read_config {
my $if = 0;
my $if_set = 0;
- while (<IN>) {
+ while (<$in>) {
# ignore blank lines and comments
next if (/^\s*$/ || /\s*\#/);
@@ -539,6 +540,33 @@ sub read_config {
die "$name: $.: Gargbage found after DEFAULTS\n$_";
}
+ } elsif (/^\s*INCLUDE\s+(\S+)/) {
+
+ next if ($skip);
+
+ if (!$default) {
+ die "$name: $.: INCLUDE can only be done in default sections\n$_";
+ }
+
+ my $file = process_variables($1);
+
+ if ($file !~ m,^/,) {
+ # check the path of the config file first
+ if ($config =~ m,(.*)/,) {
+ if (-f "$1/$file") {
+ $file = "$1/$file";
+ }
+ }
+ }
+
+ if ( ! -r $file ) {
+ die "$name: $.: Can't read file $file\n$_";
+ }
+
+ if (__read_config($file, \$test_num)) {
+ $test_case = 1;
+ }
+
} elsif (/^\s*([A-Z_\[\]\d]+)\s*=\s*(.*?)\s*$/) {
next if ($skip);
@@ -594,13 +622,26 @@ sub read_config {
}
}
- close(IN);
-
if ($test_num) {
$test_num += $repeat - 1;
$opt{"NUM_TESTS"} = $test_num;
}
+ close($in);
+
+ $$current_test_num = $test_num;
+
+ return $test_case;
+}
+
+sub read_config {
+ my ($config) = @_;
+
+ my $test_case;
+ my $test_num = 0;
+
+ $test_case = __read_config $config, \$test_num;
+
# make sure we have all mandatory configs
get_ktest_configs;
diff --git a/tools/testing/ktest/sample.conf b/tools/testing/ktest/sample.conf
index 4e8fb91..ae2a93c 100644
--- a/tools/testing/ktest/sample.conf
+++ b/tools/testing/ktest/sample.conf
@@ -122,8 +122,36 @@
# ELSE
# BUILD_TYPE = useconfig:${CONFIG_DIR}/config-64
#
-
-
+#
+# INCLUDE file
+#
+# The INCLUDE keyword may be used in DEFAULT sections. This will
+# read another config file and process that file as well. The included
+# file can include other files, add new test cases or default
+# statements. Config variables will be passed to these files and changes
+# to config variables will be seen by top level config files. Including
+# a file is processed just like the contents of the file was cut and pasted
+# into the top level file, except, that include files that end with
+# TEST_START sections will have that section ended at the end of
+# the include file. That is, an included file is included followed
+# by another DEFAULT keyword.
+#
+# Unlike other files referenced in this config, the file path does not need
+# to be absolute. If the file does not start with '/', then the directory
+# that the current config file was located in is used. If no config by the
+# given name is found there, then the current directory is searched.
+#
+# INCLUDE myfile
+# DEFAULT
+#
+# is the same as:
+#
+# INCLUDE myfile
+#
+# Note, if the include file does not contain a full path, the file is
+# searched first by the location of the original include file, and then
+# by the location that ktest.pl was executed in.
+#
#### Config variables ####
#
--
1.7.6.3
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
next prev parent reply other threads:[~2011-10-28 11:20 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-28 11:15 [PATCH 00/21] [GIT PULL] ktest: lots of nice new features Steven Rostedt
2011-10-28 11:15 ` [PATCH 01/21] ktest: Add TEST_TYPE install option Steven Rostedt
2011-10-28 11:16 ` [PATCH 02/21] ktest: Create outputdir if it does not exist Steven Rostedt
2011-10-28 11:16 ` [PATCH 03/21] ktest: Only need to save .config when doing mrproper Steven Rostedt
2011-10-28 11:16 ` [PATCH 04/21] ktest: Include monitor in reboot code Steven Rostedt
2011-10-28 11:16 ` [PATCH 05/21] ktest: Fail when grub menu not found Steven Rostedt
2011-10-28 11:16 ` [PATCH 06/21] ktest: Add NO_INSTALL option to not install for a test Steven Rostedt
2011-10-28 11:16 ` [PATCH 07/21] ktest: Add option REBOOT_SUCCESS_LINE to stop waiting after a reboot Steven Rostedt
2011-10-28 11:16 ` [PATCH 08/21] ktest: Do not reboot on config or build issues Steven Rostedt
2011-10-28 11:16 ` [PATCH 09/21] ktest: Add IF and ELSE to config sections Steven Rostedt
2011-10-28 11:16 ` [PATCH 10/21] ktest: Let IF keyword take comparisons Steven Rostedt
2011-10-28 11:16 ` Steven Rostedt [this message]
2011-10-28 11:16 ` [PATCH 12/21] ktest: Consolidate TEST_TYPE and DEFAULT code Steven Rostedt
2011-10-28 11:16 ` [PATCH 13/21] ktest: Add OVERRIDE keyword to DEFAULTS section Steven Rostedt
2011-10-28 11:16 ` [PATCH 14/21] ktest: Add DEFINED keyword for IF statements Steven Rostedt
2011-10-28 11:16 ` [PATCH 15/21] ktest: Sort make_min_config configs by dependecies Steven Rostedt
2011-10-28 11:16 ` [PATCH 16/21] ktest: Fix parsing of config section lines Steven Rostedt
2011-10-28 11:16 ` [PATCH 17/21] ktest: Add processing of complex conditionals Steven Rostedt
2011-10-28 11:16 ` [PATCH 18/21] ktest: Do not opencode reboot in grub setting Steven Rostedt
2011-10-28 11:16 ` [PATCH 19/21] ktest: Add another monitor flush before installing kernel Steven Rostedt
2011-10-28 11:16 ` [PATCH 20/21] ktest: Add variable ${PWD} Steven Rostedt
2011-10-28 11:16 ` [PATCH 21/21] ktest: Evaluate variables entered on the command line Steven Rostedt
2011-11-08 1:23 ` [PATCH 00/21] [GIT PULL] ktest: lots of nice new features Steven Rostedt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20111028112024.551423741@goodmis.org \
--to=rostedt@goodmis.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.