mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-16 14:02:10 +00:00
ktest: Add INCLUDE keyword to include other config files
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>
This commit is contained in:
parent
ab7a3f52ce
commit
2ed3b16128
@ -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;
|
||||
|
||||
|
@ -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 ####
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user