Re: [RFC kvm-unit-tests PATCH v2 14/14] shellcheck: Suppress various messages

Andrew Jones
2024-04-08T07:37:34Z

On Sat, Apr 06, 2024 at 10:38:23PM +1000, Nicholas Piggin wrote:
> Various info and warnings are suppressed here, where circumstances
> (commented) warrant.
>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> configure | 2 ++
> run_tests.sh | 3 +++
> scripts/arch-run.bash | 15 +++++++++++++++
> scripts/mkstandalone.sh | 2 ++
> scripts/runtime.bash | 2 ++
> 5 files changed, 24 insertions(+)
>
> diff --git a/configure b/configure
> index 8508396af..6ebac7e0a 100755
> --- a/configure
> +++ b/configure
> @@ -437,6 +437,8 @@ ln -sf "$asm" lib/asm
>
> # create the config
> cat <<EOF > config.mak
> +# Shellcheck does not see these are used
> +# shellcheck disable=SC2034
> SRCDIR=$srcdir
> PREFIX=$prefix
> HOST=$host
> diff --git a/run_tests.sh b/run_tests.sh
> index 938bb8edf..152323ffc 100755
> --- a/run_tests.sh
> +++ b/run_tests.sh
> @@ -45,6 +45,9 @@ fi
> only_tests=""
> list_tests=""
> args=$(getopt -u -o ag:htj:vl -l all,group:,help,tap13,parallel:,verbose,list,probe-maxsmp -- "$@")
> +# Shellcheck likes to test commands directly rather than with $? but sometimes they
> +# are too long to put in the same test.
> +# shellcheck disable=SC2181
> [ $? -ne 0 ] && exit 2;
> set -- $args;
> while [ $# -gt 0 ]; do
> diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash
> index 98d29b671..7e5b2bdf1 100644
> --- a/scripts/arch-run.bash
> +++ b/scripts/arch-run.bash
> @@ -44,6 +44,8 @@ run_qemu ()
> if [ "$errors" ]; then
> sig=$(grep 'terminating on signal' <<<"$errors")
> if [ "$sig" ]; then
> + # This is too complex for ${var/search/replace}
> + # shellcheck disable=SC2001
> sig=$(sed 's/.*terminating on signal \([0-9][0-9]*\).*/\1/' <<<"$sig")
> fi
> fi
> @@ -174,9 +176,12 @@ run_migration ()
>
> # Holding both ends of the input fifo open prevents opens from
> # blocking and readers getting EOF when a writer closes it.
> + # These fds appear to be unused to shellcheck so quieten the warning.
> mkfifo ${src_infifo}
> mkfifo ${dst_infifo}
> + # shellcheck disable=SC2034
> exec {src_infifo_fd}<>${src_infifo}
> + # shellcheck disable=SC2034
> exec {dst_infifo_fd}<>${dst_infifo}
>
> "${migcmdline[@]}" \
> @@ -184,6 +189,9 @@ run_migration ()
> -mon chardev=mon,mode=control \
> < ${src_infifo} > ${src_outfifo} &
> live_pid=$!
> + # Shellcheck complains about useless cat but it is clearer than a
> + # redirect in this case.
> + # shellcheck disable=SC2002
> cat ${src_outfifo} | tee ${src_out} | filter_quiet_msgs &
>
> # Start the first destination QEMU machine in advance of the test
> @@ -224,6 +232,9 @@ do_migration ()
> -mon chardev=mon,mode=control -incoming unix:${dst_incoming} \
> < ${dst_infifo} > ${dst_outfifo} &
> incoming_pid=$!
> + # Shellcheck complains about useless cat but it is clearer than a
> + # redirect in this case.
> + # shellcheck disable=SC2002
> cat ${dst_outfifo} | tee ${dst_out} | filter_quiet_msgs &
>
> # The test must prompt the user to migrate, so wait for the
> @@ -467,6 +478,8 @@ env_params ()
> [ -n "$ACCEL" ] && QEMU_ACCEL=$ACCEL
> fi
> QEMU_VERSION_STRING="$($qemu -h | head -1)"
> + # SC does not seee QEMU_MAJOR|MINOR|MICRO are used

Shellcheck does not see

> + # shellcheck disable=SC2034
> IFS='[ .]' read -r _ _ _ QEMU_MAJOR QEMU_MINOR QEMU_MICRO rest <<<"$QEMU_VERSION_STRING"
> fi
> env_add_params QEMU_ACCEL QEMU_VERSION_STRING QEMU_MAJOR QEMU_MINOR QEMU_MICRO
> @@ -597,6 +610,8 @@ hvf_available ()
>
> set_qemu_accelerator ()
> {
> + # Shellcheck does not seee ACCEL_PROPS is used

see

> + # shellcheck disable=SC2034
> ACCEL_PROPS=${ACCEL#"${ACCEL%%,*}"}
> ACCEL=${ACCEL%%,*}
>
> diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh
> index 756647f29..2318a85f0 100755
> --- a/scripts/mkstandalone.sh
> +++ b/scripts/mkstandalone.sh
> @@ -65,6 +65,8 @@ generate_test ()
> fi
>
> temp_file bin "$kernel"
> + # Don't want to expand $bin but print it as-is.
> + # shellcheck disable=SC2016
> args[3]='$bin'
>
> (echo "#!/usr/bin/env bash"
> diff --git a/scripts/runtime.bash b/scripts/runtime.bash
> index 3b76aec9e..6e712214d 100644
> --- a/scripts/runtime.bash
> +++ b/scripts/runtime.bash
> @@ -137,6 +137,8 @@ function run()
> # the check line can contain multiple files to check separated by a space
> # but each check parameter needs to be of the form <path>=<value>
> if [ "$check" ]; then
> + # There is no globbing or whitespace allowed in check parameters.
> + # shellcheck disable=SC2206
> check=($check)
> for check_param in "${check[@]}"; do
> path=${check_param%%=*}
> --
> 2.43.0
>

Other than comment fixes,