pistepirkko/tests/test-output.sh
2026-04-09 22:22:23 +03:00

31 lines
680 B
Bash

#!/bin/sh
set -e
tmpdir="$(mktemp -d)"
trap 'rm -r "$tmpdir"' EXIT
usage="usage: $0 transcript_file command [args ...]"
transcript_file="${1:?$usage}"
shift
: "${1:?$usage}"
if "$@" > "$tmpdir/stdout" 2> "$tmpdir/stderr"
then
exit_code="$?"
else
exit_code="$?"
fi
sed -nE 's/^#stdout: //p' "$transcript_file" | diff -u /dev/stdin "$tmpdir/stdout"
sed -nE 's/^#stderr: //p' "$transcript_file" | diff -u /dev/stdin "$tmpdir/stderr"
expected_exit_code="$(sed -nE 's/^#exit-code: //p' "$transcript_file")"
: "${expected_exit_code:=0}"
if [ "$exit_code" != "$expected_exit_code" ]
then
printf 'Expected exit code %i, got %i.\n' "$expected_exit_code" "$exit_code"
exit 1
fi