On 27/11/15 09:15, larsxschneider@xxxxxxxxx wrote: > From: Lars Schneider <larsxschneider@xxxxxxxxx> > > Add an (optional) first parameter "ok=<special case>" to test_must_fail > and return success for "<special case>". Add "success" as > "<special case>" and use it to implement "test_might_fail". This removes > redundancies in test-lib-function.sh. > > You can pass multiple <special case> arguments divided by comma (e.g. > "test_must_fail ok=success,something") > > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > Signed-off-by: Jeff King <peff@xxxxxxxx> > Signed-off-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Lars Schneider <larsxschneider@xxxxxxxxx> > --- > t/test-lib-functions.sh | 47 +++++++++++++++++++++++++++++++++-------------- > 1 file changed, 33 insertions(+), 14 deletions(-) > > diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh > index 73e37a1..94c449a 100644 > --- a/t/test-lib-functions.sh > +++ b/t/test-lib-functions.sh > @@ -569,6 +569,21 @@ test_line_count () { > fi > } > > +# Returns success if a comma separated string of keywords ($1) contains a > +# given keyword ($2). > +# Examples: > +# `list_contains "foo,bar" bar` returns 0 > +# `list_contains "foo" bar` returns 1 > + > +list_contains () { > + case ",$1," in > + *,$2,*) > + return 0 > + ;; > + esac > + return 1 > +} > + > # 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: > # > @@ -582,18 +597,31 @@ 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 ! list_contains "$_test_ok" success && test "$exit_code" -eq 0 > + then minor nit: I would prefer this was 'if test $exit_code -eq 0 && ! list_contains ...' ie. the test on exit code comes first (and no need for the double quotes). The whole if..elif.. chain is about testing the exit code, with a couple of exceptions ... The same comment applies to the second patch with exit code 141/SIGPIPE. ATB, Ramsay Jones -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html