Junio C Hamano <[email protected]> writes:
> Adding the third variant in the way this patch does is making things
> worse by inviting more mistakes.
>
> How about doing something like the attached to consolidate the
> existing two into one, and then build this third one on top?
Actually, I think this other variant I came up with is cleaner and
is more easily extensible. It already has the support for sigpipe,
e.g. you can do
test_must_fail ok=sigpipe git fetch ...
Of course, you can do
test_must_fail_or_sigpipe () {
test_must_fail ok=sigpipe "$@"
}
if it is easier to read. I do not have a very strong opinion either
way.
t/test-lib-functions.sh | 28 +++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index e8d3c0f..b732f87 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -560,11 +560,26 @@ test_line_count () {
# the failure could be due to a segv. We want a controlled failure.
test_must_fail () {
+ case "$1" in
+ ok=*)
+ _test_ok=${1#ok=}
+ shift
+ ;;
+ *)
+ _test_ok=
+ ;;
+ esac
"$@"
exit_code=$?
- if test $exit_code = 0; then
+ if ! case ",$_test_ok," in *,success,*) false;; esac &&
+ test $exit_code = 0
+ then
echo >&2 "test_must_fail: command succeeded: $*"
return 1
+ elif ! case ",$_test_ok," in *,sigpipe,*) false;; esac &&
+ test $exit_code = 141
+ then
+ return 0
elif test $exit_code -gt 129 && test $exit_code -le 192; then
echo >&2 "test_must_fail: died by signal: $*"
return 1
@@ -590,16 +605,7 @@ test_must_fail () {
# because we want to notice if it fails due to segv.
test_might_fail () {
- "$@"
- exit_code=$?
- if test $exit_code -gt 129 && test $exit_code -le 192; then
- echo >&2 "test_might_fail: died by signal: $*"
- return 1
- elif test $exit_code = 127; then
- echo >&2 "test_might_fail: command not found: $*"
- return 1
- fi
- return 0
+ test_must_fail ok=success "$@"
}
# Similar to test_must_fail and test_might_fail, but check that a
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html