X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=t%2Ftap.sh;h=8f9eabe6cf3b3bf825d218af41f4bac3e399e052;hb=1cae772831e604785c37f347bd6b0618f59e0f69;hp=b82f203f5f7628cbdaca6d46d46974a2431ba826;hpb=139e10d38c5e0b6c65fad2a5d3e10450b0b714bb;p=zpackage diff --git a/t/tap.sh b/t/tap.sh index b82f203..8f9eabe 100755 --- a/t/tap.sh +++ b/t/tap.sh @@ -4,29 +4,47 @@ tn=0 planned=0 tryrun() { - note="$@" + if [ "$1" = "-v" ]; then + allout=1 + shift + else + allout=0 + fi + program=$1 shift - $program "$@" - if [ $? -ne 0 ]; then + + $program "$@" > test.out 2>&1 + tap_rv=$? + tn=$((tn + 1)) + + if [ $tap_rv -ne 0 ]; then printf 'not '; fi - tn=$((tn + 1)) printf 'ok %d - %s %s\n' $tn $program "$*" + + if [ $allout -eq 1 ] || [ $tap_rv -ne 0 ]; then + if test -s test.out; then + cat test.out | diagstdin + fi + rm test.out + fi + + return $tap_rv } require() { - note="$@" - program=$1 - shift - $program "$@" - if [ $? -ne 0 ]; then - printf "bail out! fail[$?]: $@\n" - exit 255; + tryrun "$@" + rv=$? + if [ $rv -ne 0 ]; then + bailout "exit status $rv"; fi - tn=$((tn + 1)) - printf 'ok %d - %s %s\n' $tn $program "$*" +} +bailout() { + diag "$@" + printf "bail out!\n"; + exit 255; } shownote() { @@ -39,6 +57,14 @@ diag() { printf '# %s\n' "$@" } +diagfile() { + sed -e 's/^/# /' $1 +} + +diagstdin() { + sed -e 's/^/# /' +} + okexit() { exitwith 0 "$*" } @@ -48,7 +74,7 @@ failsok() { note= if [ $rv -eq 0 ]; then printf 'not '; - note=$(printf 'got "%d" expected "%d"' "$rv" "0") + note=$(printf 'got "%d" expected non-zero' "$rv") fi tn=$((tn + 1)) printf 'ok %d - %s\n' $tn "$*" @@ -60,12 +86,13 @@ exitwith() { note= if [ $rv -ne $1 ]; then printf 'not '; - note=$(printf '# got "%d" expected "%d"' "$rv" "$1") + note=$(printf 'got "%d" expected "%d"' "$rv" "$1") fi shift tn=$((tn + 1)) printf 'ok %d - %s\n' $tn "$*" shownote + return $rv } okstreq() { @@ -91,3 +118,33 @@ finish() { printf '1..%d\n' $tn fi } + +skip() { + tap_skipping=$1 + shift + while [ $tap_skipping -gt 0 ]; do + tn=$((tn + 1)) + tap_skipping=$((tap_skipping - 1)) + printf 'ok %d - # skip %s\n' $tn "$*" + #ok '# skip ' "$*" + done +} + +ok() { + rv=$1 + shift + if [ $rv = 1 ]; then + printf 'not ' + fi + tn=$((tn + 1)) + printf 'ok %d - %s\n' $tn "$*" + return $rv +} + +pass() { + ok 0 "$@" +} + +fail() { + ok 1 "$@" +}