summaryrefslogtreecommitdiff
path: root/tools/testing
diff options
context:
space:
mode:
authorRicardo B. Marlière <rbm@suse.com>2026-03-08 01:07:58 +0300
committerSteven Rostedt <rostedt@goodmis.org>2026-03-09 17:32:07 +0300
commita2706c6c4ab5f74366740576b4d06b17392f0086 (patch)
tree3e8d92560e454a73e6d6fa2283f1fc9b4144ff5e /tools/testing
parenteb30942e4ed7365116c2eb9b2a25995520744620 (diff)
downloadlinux-a2706c6c4ab5f74366740576b4d06b17392f0086.tar.xz
ktest: Treat undefined self-reference as empty
Config variables are expanded when they are assigned. A first-time append such as: VAR := ${VAR} foo leaves the literal ${VAR} in the stored value because VAR has not been defined yet. Later expansions then carry the self-reference forward instead of behaving like an empty prefix. Drop an unescaped self-reference when the variable has no current value, and trim the outer whitespace left behind. Keep escaped \${VAR} references unchanged so literal text still works. Cc: John Hawley <warthog9@eaglescrag.net> Cc: Andrea Righi <arighi@nvidia.com> Cc: Marcos Paulo de Souza <mpdesouza@suse.com> Cc: Matthieu Baerts <matttbe@kernel.org> Cc: Fernando Fernandez Mancera <fmancera@suse.de> Cc: Pedro Falcato <pfalcato@suse.de> Link: https://patch.msgid.link/20260307-ktest-fixes-v1-3-565d412f4925@suse.com Signed-off-by: Ricardo B. Marlière <rbm@suse.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'tools/testing')
-rwxr-xr-xtools/testing/ktest/ktest.pl8
1 files changed, 8 insertions, 0 deletions
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index b7a1c8c617e0..b8fcdabffffe 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -910,6 +910,14 @@ sub set_variable {
if (defined($command_tmp_vars{$lvalue})) {
return;
}
+
+ # If a variable is undefined, treat an unescaped self-reference as empty.
+ if (!defined($variable{$lvalue})) {
+ $rvalue =~ s/(?<!\\)\$\{\Q$lvalue\E\}//g;
+ $rvalue =~ s/^\s+//;
+ $rvalue =~ s/\s+$//;
+ }
+
if ($rvalue =~ /^\s*$/) {
delete $variable{$lvalue};
} else {