X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=tests%2Flib;h=f45dd0b2bb80ecbdec39807d471cac72bf2f531d;hp=776e2a3e40f42bf426365d96f2894e57795044e7;hb=f97a00d63b1d302cb23c5ffb090efea80fd8d42f;hpb=9f377842120dd8d6206a3f3f2eb297b3e4907fa8 diff --git a/tests/lib b/tests/lib index 776e2a3e..f45dd0b2 100644 --- a/tests/lib +++ b/tests/lib @@ -44,12 +44,40 @@ END t-expect-fail () { local mpat="$1"; shift + + local grepper=fgrep + case "$mpat" in + [A-Z]:*) + case "$mpat" in + E:*) grepper=egrep ;; + F:*) grepper=fgrep ;; + *) fail "bad mpat prefix in $mpat";; + esac + mpat=${mpat#[A-Z]:} + ;; + esac + set +o pipefail LC_MESSAGES=C "$@" 2>&1 | tee $tmp/t.output - local gotstatus=${PIPESTATUS[0]} + local ps="${PIPESTATUS[*]}" set -o pipefail - test $gotstatus != 0 - egrep "$mpat" $tmp/t.output ||false + + case $ps in + "0 0") fail "command unexpectedly succeeded (instead of: $mpat)" ;; + *" 0") ;; + *) fail "tee failed" ;; + esac + + $grepper -e "$mpat" $tmp/t.output || + fail "error message not found" +} + +t-expect-push-fail () { + local mpat="$1"; shift + t-reporefs pre-push + t-expect-fail "$mpat" "$@" + t-reporefs post-push + diff $tmp/show-refs.{pre,post}-push } t-reporefs () {