ktest changes for 6.2

- Fix minconfig test to unset the config and not relying on
   olddefconfig to do it, as some configs are set to default y
 
 - Fix reading grub2 menus for handling submenus
 
 - Add new ${shell <cmd>} to execute shell commands that will be useful
   for setting variables like: HOSTNAME := ${shell hostname}
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCY5erBBQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qqeoAQDzt97bAEfWfPGoKBWjtVs/TVIrpyVt
 WGbrRwJzdgIrigD/SUBHq4irLD85UpGSG3EiHZRcyJxn8Wuv7npNgtpexQA=
 =oPSv
 -----END PGP SIGNATURE-----

Merge tag 'ktest-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest

Pull ktest updates from Steven Rostedt:

 - Fix minconfig test to unset the config and not relying on
   olddefconfig to do it, as some configs are set to default y

 - Fix reading grub2 menus for handling submenus

 - Add new ${shell <cmd>} to execute shell commands that will be useful
   for setting variables like: HOSTNAME := ${shell hostname}

* tag 'ktest-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest:
  ktest.pl: Add shell commands to variables
  kest.pl: Fix grub2 menu handling for rebooting
  ktest.pl minconfig: Unset configs instead of just removing them
This commit is contained in:
Linus Torvalds 2022-12-12 16:46:08 -08:00
commit 535ea85de3
2 changed files with 33 additions and 7 deletions

View File

@ -802,7 +802,14 @@ sub process_variables {
my $end = $3;
# append beginning of value to retval
$retval = "$retval$begin";
if (defined($variable{$var})) {
if ($var =~ s/^shell\s+//) {
$retval = `$var`;
if ($?) {
doprint "WARNING: $var returned an error\n";
} else {
chomp $retval;
}
} elsif (defined($variable{$var})) {
$retval = "$retval$variable{$var}";
} elsif (defined($remove_undef) && $remove_undef) {
# for if statements, any variable that is not defined,
@ -1963,7 +1970,7 @@ sub run_scp_mod {
sub _get_grub_index {
my ($command, $target, $skip) = @_;
my ($command, $target, $skip, $submenu) = @_;
return if (defined($grub_number) && defined($last_grub_menu) &&
$last_grub_menu eq $grub_menu && defined($last_machine) &&
@ -1980,11 +1987,16 @@ sub _get_grub_index {
my $found = 0;
my $submenu_number = 0;
while (<IN>) {
if (/$target/) {
$grub_number++;
$found = 1;
last;
} elsif (defined($submenu) && /$submenu/) {
$submenu_number++;
$grub_number = -1;
} elsif (/$skip/) {
$grub_number++;
}
@ -1993,6 +2005,9 @@ sub _get_grub_index {
dodie "Could not find '$grub_menu' through $command on $machine"
if (!$found);
if ($submenu_number > 0) {
$grub_number = "$submenu_number>$grub_number";
}
doprint "$grub_number\n";
$last_grub_menu = $grub_menu;
$last_machine = $machine;
@ -2003,6 +2018,7 @@ sub get_grub_index {
my $command;
my $target;
my $skip;
my $submenu;
my $grub_menu_qt;
if ($reboot_type !~ /^grub/) {
@ -2017,8 +2033,9 @@ sub get_grub_index {
$skip = '^\s*title\s';
} elsif ($reboot_type eq "grub2") {
$command = "cat $grub_file";
$target = '^menuentry.*' . $grub_menu_qt;
$skip = '^menuentry\s|^submenu\s';
$target = '^\s*menuentry.*' . $grub_menu_qt;
$skip = '^\s*menuentry';
$submenu = '^\s*submenu\s';
} elsif ($reboot_type eq "grub2bls") {
$command = $grub_bls_get;
$target = '^title=.*' . $grub_menu_qt;
@ -2027,7 +2044,7 @@ sub get_grub_index {
return;
}
_get_grub_index($command, $target, $skip);
_get_grub_index($command, $target, $skip, $submenu);
}
sub wait_for_input {
@ -2090,7 +2107,7 @@ sub reboot_to {
if ($reboot_type eq "grub") {
run_ssh "'(echo \"savedefault --default=$grub_number --once\" | grub --batch)'";
} elsif (($reboot_type eq "grub2") or ($reboot_type eq "grub2bls")) {
run_ssh "$grub_reboot $grub_number";
run_ssh "$grub_reboot \"'$grub_number'\"";
} elsif ($reboot_type eq "syslinux") {
run_ssh "$syslinux --once \\\"$syslinux_label\\\" $syslinux_path";
} elsif (defined $reboot_script) {
@ -3768,9 +3785,10 @@ sub test_this_config {
# .config to make sure it is missing the config that
# we had before
my %configs = %min_configs;
delete $configs{$config};
$configs{$config} = "# $config is not set";
make_new_config ((values %configs), (values %keep_configs));
make_oldconfig;
delete $configs{$config};
undef %configs;
assign_configs \%configs, $output_config;

View File

@ -259,6 +259,14 @@
# If PATH is not a config variable, then the ${PATH} in
# the MAKE_CMD option will be evaluated by the shell when
# the MAKE_CMD option is passed into shell processing.
#
# Shell commands can also be inserted with the ${shell <command>}
# expression. Note, this is case sensitive, thus ${SHELL <command>}
# will not work.
#
# HOSTNAME := ${shell hostname}
# DEFAULTS IF "${HOSTNAME}" == "frodo"
#
#### Using options in other options ####
#