aboutsummaryrefslogtreecommitdiff
path: root/t/test-lib.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-02-28 13:09:30 -0800
committerJunio C Hamano <gitster@pobox.com>2008-02-29 00:00:29 -0800
commit7435982102093179474a128648179a44042d8a1c (patch)
tree0241bd25b24d222758ed70363340379fec5d12e8 /t/test-lib.sh
parent301e42edc3fa277059be97b3be5b97d86ddc9d9f (diff)
downloadgit-7435982102093179474a128648179a44042d8a1c.tar.gz
git-7435982102093179474a128648179a44042d8a1c.tar.xz
tests: introduce test_must_fail
When we expect a git command to notice and signal errors, we carelessly wrote in our tests: test_expect_success 'reject bogus request' ' do something && do something else && ! git command ' but a non-zero exit could come from the "git command" segfaulting. A new helper function "tset_must_fail" is introduced and it is meant to be used to make sure the command gracefully fails (iow, dying and exiting with non zero status is counted as a failure to "gracefully fail"). The above example should be written as: test_expect_success 'reject bogus request' ' do something && do something else && test_must_fail git command ' Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/test-lib.sh')
-rw-r--r--t/test-lib.sh17
1 files changed, 17 insertions, 0 deletions
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 83889c4f4..90df619b9 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -270,6 +270,23 @@ test_expect_code () {
echo >&3 ""
}
+# This is not among top-level (test_expect_success | test_expect_failure)
+# but is a prefix that can be used in the test script, like:
+#
+# test_expect_success 'complain and die' '
+# do something &&
+# do something else &&
+# test_must_fail git checkout ../outerspace
+# '
+#
+# Writing this as "! git checkout ../outerspace" is wrong, because
+# the failure could be due to a segv. We want a controlled failure.
+
+test_must_fail () {
+ "$@"
+ test $? -gt 0 -a $? -le 128
+}
+
# Most tests can use the created repository, but some may need to create more.
# Usage: test_create_repo <directory>
test_create_repo () {