]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ktest.pl: Allow command option -D to override temp variables
authorSteven Rostedt <rostedt@goodmis.org>
Fri, 18 Jul 2025 20:18:42 +0000 (16:18 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Mon, 21 Jul 2025 20:31:04 +0000 (16:31 -0400)
Currently -D only updates the persistent options that are defined with
"=". Allow it to also override all temp variables that are defined with
":=".

 ktest.pl -D 'USE_TEMP_DIR:=1' -D 'TEST_TYPE[2]=build' config

Cc: "John Warthog9 Hawley" <warthog9@kernel.org>
Cc: Dhaval Giani <dhaval.giani@gmail.com>
Cc: Greg KH <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/20250718202053.399653933@kernel.org
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
tools/testing/ktest/ktest.pl

index 16e20d4137b37bb8e5a139147774c9105ea65581..7b94b9b83ee781532cceee0a8698f55db26e002b 100755 (executable)
@@ -22,6 +22,7 @@ my %repeat_tests;
 my %repeats;
 my %evals;
 my @command_vars;
+my %command_tmp_vars;
 
 #default opts
 my %default = (
@@ -901,14 +902,22 @@ sub set_eval {
 }
 
 sub set_variable {
-    my ($lvalue, $rvalue) = @_;
+    my ($lvalue, $rvalue, $command) = @_;
 
+    # Command line variables override all others
+    if (defined($command_tmp_vars{$lvalue})) {
+       return;
+    }
     if ($rvalue =~ /^\s*$/) {
        delete $variable{$lvalue};
     } else {
        $rvalue = process_variables($rvalue);
        $variable{$lvalue} = $rvalue;
     }
+
+    if (defined($command)) {
+       $command_tmp_vars{$lvalue} = 1;
+    }
 }
 
 sub process_compare {
@@ -4267,6 +4276,11 @@ ktest.pl version: $VERSION
                 -D TEST_TYPE[2]=build
                     Sets TEST_TYPE of test 2 to "build"
 
+               It can also override all temp variables.
+                 -D USE_TEMP_DIR:=1
+                    Will override all variables that use
+                    "USE_TEMP_DIR="
+
 EOF
 ;
 }
@@ -4277,7 +4291,11 @@ while ( $#ARGV >= 0 ) {
        die_usage if ($#ARGV < 1);
        my $val = shift;
 
-       $command_vars[$#command_vars + 1] = $val;
+       if ($val =~ m/(.*?):=(.*)$/) {
+           set_variable($1, $2, 1);
+       } else {
+           $command_vars[$#command_vars + 1] = $val;
+       }
 
     } elsif ( $ARGV[0] eq "-h" ) {
        die_usage;