425aeafedf
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
29 lines
969 B
Bash
29 lines
969 B
Bash
#!/usr/bin/env bash
|
|
#
|
|
# `bats-core` will consume both stdout and stderr for the `run` command's output.
|
|
# However `jq` prints its DEBUG output on stderr.
|
|
#
|
|
# Lines starting with `["DEBUG:",` will be prefixed with a hash and printed on file descriptor 3.
|
|
# Other lines on stderr will remain on stderr for bats to consume.
|
|
#
|
|
# See `bats-core` docs:
|
|
# - "Printing to the terminal", https://bats-core.readthedocs.io/en/stable/writing-tests.html#printing-to-the-terminal
|
|
# - "File descriptor 3", https://bats-core.readthedocs.io/en/stable/writing-tests.html#file-descriptor-3-read-this-if-bats-hangs
|
|
|
|
|
|
jq() {
|
|
local output stderr rc line
|
|
stderr=$(mktemp)
|
|
output=$(command jq "$@" 2> "$stderr")
|
|
rc=$?
|
|
while IFS= read -r line || [[ -n $line ]]; do
|
|
if [[ $line == '["DEBUG:",'* ]]; then
|
|
echo "# $line" >&3
|
|
else
|
|
echo "$line" >&2
|
|
fi
|
|
done < "$stderr"
|
|
rm -f "$stderr"
|
|
echo "$output"
|
|
return "$rc"
|
|
}
|