summaryrefslogtreecommitdiff
path: root/Test/ztst.zsh
diff options
context:
space:
mode:
authorDaniel Shahaf <danielsh@apache.org>2019-12-31 01:52:03 +0000
committerDaniel Shahaf <danielsh@apache.org>2020-01-01 13:55:39 +0000
commit7e2c80fcd5a2aeae299f55e392e00275943f1562 (patch)
treefe0b5efa001da7bacc26b7cf1232a453c5547379 /Test/ztst.zsh
parent6a67d38e969fe0acacf3191291e44a862376321f (diff)
downloadzsh-7e2c80fcd5a2aeae299f55e392e00275943f1562.tar.gz
zsh-7e2c80fcd5a2aeae299f55e392e00275943f1562.zip
45169/0001: In the test suite, allow test cases to be marked as expected to fail.
See next commit for a use-case.
Diffstat (limited to 'Test/ztst.zsh')
-rwxr-xr-xTest/ztst.zsh30
1 files changed, 28 insertions, 2 deletions
diff --git a/Test/ztst.zsh b/Test/ztst.zsh
index a4c625230..375efd16c 100755
--- a/Test/ztst.zsh
+++ b/Test/ztst.zsh
@@ -366,6 +366,7 @@ ZTST_test() {
local last match mbegin mend found substlines
local diff_out diff_err
local ZTST_skip
+ integer expected_to_fail
while true; do
rm -f $ZTST_in $ZTST_out $ZTST_err
@@ -460,8 +461,21 @@ $ZTST_curline"
fi
fi
+ if [[ $ZTST_flags = *f* ]]; then
+ expected_to_fail=1
+ ZTST_xfail_diff() { ZTST_diff "$@" > /dev/null }
+ ZTST_diff=ZTST_xfail_diff
+ else
+ expected_to_fail=0
+ ZTST_diff=ZTST_diff
+ fi
+
# First check we got the right status, if specified.
if [[ $ZTST_xstatus != - && $ZTST_xstatus != $ZTST_status ]]; then
+ if (( expected_to_fail )); then
+ ZTST_verbose 1 "Test failed, as expected."
+ continue
+ fi
ZTST_testfailed "bad status $ZTST_status, expected $ZTST_xstatus from:
$ZTST_code${$(<$ZTST_terr):+
Error output:
@@ -480,7 +494,11 @@ $(<$ZTST_terr)"
rm -rf $ZTST_out
print -r -- "${(e)substlines}" >$ZTST_out
fi
- if [[ $ZTST_flags != *d* ]] && ! ZTST_diff $diff_out -u $ZTST_out $ZTST_tout; then
+ if [[ $ZTST_flags != *d* ]] && ! $ZTST_diff $diff_out -u $ZTST_out $ZTST_tout; then
+ if (( expected_to_fail )); then
+ ZTST_verbose 1 "Test failed, as expected."
+ continue
+ fi
ZTST_testfailed "output differs from expected as shown above for:
$ZTST_code${$(<$ZTST_terr):+
Error output:
@@ -492,11 +510,19 @@ $(<$ZTST_terr)}"
rm -rf $ZTST_err
print -r -- "${(e)substlines}" >$ZTST_err
fi
- if [[ $ZTST_flags != *D* ]] && ! ZTST_diff $diff_err -u $ZTST_err $ZTST_terr; then
+ if [[ $ZTST_flags != *D* ]] && ! $ZTST_diff $diff_err -u $ZTST_err $ZTST_terr; then
+ if (( expected_to_fail )); then
+ ZTST_verbose 1 "Test failed, as expected."
+ continue
+ fi
ZTST_testfailed "error output differs from expected as shown above for:
$ZTST_code"
return 1
fi
+ if (( expected_to_fail )); then
+ ZTST_testfailed "test was expected to fail, but passed."
+ return 1
+ fi
fi
ZTST_verbose 1 "Test successful."
[[ -n $last ]] && break