From de28c20d8051735d0b828cedb8697c8ef65dd719 Mon Sep 17 00:00:00 2001 From: Yumei Huang Date: Fri, 26 Sep 2025 14:15:53 +0800 Subject: test: Update lib/term for clearer output when DEBUG is enabled When running tests with DEBUG=1, we used to get some "DEBUG:DEBUG:DEBUG:" in logs, which is not very helpful for debugging. With this patch, the log would show the steps like below: DEBUG: g1tools ip jq dhclient socat cat DEBUG: htools ip jq DEBUG: DEBUG: set MAP_HOST4 192.0.2.1 DEBUG: set MAP_HOST6 2001:db8:9a55::1 The problem here is that "${@}" is magic and expands to multiple arguments, even though it's quoted. That means instead of the whole message going into a single string, the "DEBUG:" becomes the format string and the rest goes into unused parameters. Suggested-by: David Gibson Signed-off-by: Yumei Huang [dwg: root cause explanation in commit message] Reviewed-by: David Gibson Signed-off-by: Stefano Brivio --- test/lib/term | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/lib/term b/test/lib/term index 089364c..6400746 100755 --- a/test/lib/term +++ b/test/lib/term @@ -32,29 +32,29 @@ PR_DELAY_INIT=100 # ms # $@: Message to print info() { tmux select-pane -t ${PANE_INFO} - printf "${@}\n" >> $STATEBASE/log_pipe - printf "${@}\n" >> "${LOGFILE}" + printf "${*}\n" >> $STATEBASE/log_pipe + printf "${*}\n" >> "${LOGFILE}" } # info_n() - Highlight, print message to pane and to log file without newline # $@: Message to print info_n() { tmux select-pane -t ${PANE_INFO} - printf "${@}" >> $STATEBASE/log_pipe - printf "${@}" >> "${LOGFILE}" + printf "${*}" >> $STATEBASE/log_pipe + printf "${*}" >> "${LOGFILE}" } # info_nolog() - Highlight test log pane, print message to it # $@: Message to print info_nolog() { tmux select-pane -t ${PANE_INFO} - printf "${@}\n" >> $STATEBASE/log_pipe + printf "${*}\n" >> $STATEBASE/log_pipe } # info_nolog() - Print message to log file # $@: Message to print log() { - printf "${@}\n" >> "${LOGFILE}" + printf "${*}\n" >> "${LOGFILE}" } # info_nolog_n() - Send message to pane without highlighting it, without newline @@ -363,8 +363,8 @@ status_test_start() { info_check() { switch_pane ${PANE_INFO} - printf "${PR_YELLOW}?${PR_NC} ${@}" >> $STATEBASE/log_pipe - printf "? ${@}" >> "${LOGFILE}" + printf "${PR_YELLOW}?${PR_NC} ${*}" >> $STATEBASE/log_pipe + printf "? ${*}" >> "${LOGFILE}" } # info_check_passed() - Display and log a new line when a check passes -- cgit v1.2.3