Commit a2706c6c authored by Ricardo B. Marlière's avatar Ricardo B. Marlière Committed by Steven Rostedt
Browse files

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: default avatarRicardo B. Marlière <rbm@suse.com>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent eb30942e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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 {