btrfs-progs: test/common: Introduce run_mustfail_stdout
For later test case which needs info from stderr. Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
c12a6e4dca
commit
2bf30fb3b1
52
tests/common
52
tests/common
|
@ -236,6 +236,58 @@ run_mustfail()
|
|||
fi
|
||||
}
|
||||
|
||||
# The first parameter is error message to print if it fails, just like
|
||||
# run_must_fail().
|
||||
# NOTE: we don't use pipefail to avoid disturbing other script, so here we
|
||||
# use a temporary output file.
|
||||
# So it doesn't support pipeline in the @cmd
|
||||
run_mustfail_stdout()
|
||||
{
|
||||
local spec
|
||||
local ins
|
||||
local cmd
|
||||
local msg
|
||||
local ret
|
||||
local tmp_output
|
||||
|
||||
tmp_output=$(mktemp --tmpdir btrfs-progs-test--mustfail-stdtout.XXXXXX)
|
||||
|
||||
msg="$1"
|
||||
shift
|
||||
|
||||
if _is_file_or_command "$msg"; then
|
||||
echo "ASSERTION FAIL: 1st argument of run_mustfail_stdout must be a message"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ins=$(_get_spec_ins "$@")
|
||||
spec=$(($ins-1))
|
||||
cmd=$(eval echo "\${$spec}")
|
||||
spec=$(_cmd_spec "${@:$spec}")
|
||||
set -- "${@:1:$(($ins-1))}" $spec "${@: $ins}"
|
||||
echo "############### $@" >> "$RESULTS" 2>&1
|
||||
if [[ $TEST_LOG =~ tty ]]; then echo "CMD(mustfail): $@" > /dev/tty; fi
|
||||
if [ "$1" = 'root_helper' ]; then
|
||||
"$@" 2>&1 > "$tmp_output"
|
||||
else
|
||||
$INSTRUMENT "$@" 2>&1 > "$tmp_output"
|
||||
fi
|
||||
ret=$?
|
||||
|
||||
cat "$tmp_output" >> "$RESULTS"
|
||||
cat "$tmp_output"
|
||||
rm "$tmp_output"
|
||||
|
||||
if [ "$ret" != 0 ]; then
|
||||
echo "failed (expected): $@" >> "$RESULTS"
|
||||
return 0
|
||||
else
|
||||
echo "succeeded (unexpected!): $@" >> "$RESULTS"
|
||||
_fail "unexpected success: $msg"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_prereq()
|
||||
{
|
||||
if ! [ -f "$TOP/$1" ]; then
|
||||
|
|
Loading…
Reference in New Issue