One of our test requires to make sure output does not contain a specific string. An example is system multiarch test run-gdbstub-untimely-packet.
Signed-off-by: Pierrick Bouvier <[email protected]> --- tests/tcg/meson.build | 3 +++ .../scripts/run_and_check_forbidden_output.sh | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100755 tests/tcg/scripts/run_and_check_forbidden_output.sh diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build index 3d2c0d6583b..f379449e582 100644 --- a/tests/tcg/meson.build +++ b/tests/tcg/meson.build @@ -8,6 +8,9 @@ endif gdb = find_program(gdb_progs, required: false) prog_gdb_test = find_program('../guest-debug/run-test.py') prog_run_and_diff = find_program('./scripts/run_and_diff.sh') +prog_run_and_check_forbidden_output = find_program( + './scripts/run_and_check_forbidden_output.sh' +) tcg_tests = {} # tcg_tests is a dictionary with following structure: diff --git a/tests/tcg/scripts/run_and_check_forbidden_output.sh b/tests/tcg/scripts/run_and_check_forbidden_output.sh new file mode 100755 index 00000000000..4486ca8ef83 --- /dev/null +++ b/tests/tcg/scripts/run_and_check_forbidden_output.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: GPL-2.0-or-later + +set -euo pipefail + +if [ $# -lt 2 ]; then + echo "run_and_check_forbidden_output: 'forbidden string' cmd [args]..." 1>&2 + exit 1 +fi +forbidden="$1";shift +output=$("$@" 2>&1) +set -x +if ! echo "$output" | grep -Fi "$forbidden" +then + echo "output does not contain forbidden string: $forbidden" + exit 0 +fi +echo "found forbidden string: $forbidden" 1>&2 +exit 1 -- 2.43.0
