On 17/05/17 05:23, Junio C Hamano wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > >> Junio C Hamano <gitster@xxxxxxxxx> writes: >> >>> It appears to me that only a few tests in the entire script wants to >>> work with HTTP server, so perhaps moving them to the end, together >>> with the inclusion of lib-httpd and start_httpd that 438fc684 ("push >>> options: pass push options to the transport helper", 2017-02-08) >>> introduced, may be sufficient? >> >> Probably not, as lib-httpd, when it gives up, does the >> "skip_all=message; test_done" thing, which makes test_done >> to trigger this: >> >> # Maybe print SKIP message >> if test -n "$skip_all" && test $test_count -gt 0 >> then >> error "Can't use skip_all after running some tests" >> fi >> >> So a bit more work is needed, than just moving things around, I am >> afraid... > > And now I am visiting bf4b7219 ("test-lib.sh: Add check for invalid > use of 'skip_all' facility", 2012-09-01), which is yours ;-) Indeed. :-D > I am wondering what the fallouts would be if we did the following to > test-lib. We used to say "1..0 # SKIP <why>" when we skip > everything, which is still kept, so that prove can notice why things > are skipped. > > When we abort early but after executing any test, we used to error > out, but instead we pretend that the test finished right there, as > it seems that we are not allowed to say "1..4 # SKIP <why>" after > running 4 tests. Yes, I had this exact 'Huh?' moment back in 2012. I remember spending quite a long time searching 'TAP specification' documents, in order to get an answer to this. It was so long ago (and I can't find the links to those documents now), but I have a vague recollection that prove's behaviour is correct in allowing '1..0 <skip message>', while throwing a fit at '1..n <any message>' (for n > 0). I would probably have simply split the test file into two, but ... > t/test-lib.sh | 21 +++++++++++++-------- > 1 file changed, 13 insertions(+), 8 deletions(-) > > diff --git a/t/test-lib.sh b/t/test-lib.sh > index 13b5696822..46f29cf112 100644 > --- a/t/test-lib.sh > +++ b/t/test-lib.sh > @@ -745,20 +745,25 @@ test_done () { > fi > case "$test_failure" in > 0) > - # Maybe print SKIP message > - if test -n "$skip_all" && test $test_count -gt 0 > - then > - error "Can't use skip_all after running some tests" > - fi > - test -z "$skip_all" || skip_all=" # SKIP $skip_all" > - > if test $test_external_has_tap -eq 0 > then > if test $test_remaining -gt 0 > then > say_color pass "# passed all $msg" > fi > - say "1..$test_count$skip_all" > + > + # Maybe print SKIP message > + test -z "$skip_all" || skip_all="# SKIP $skip_all" > + case "$test_count" in > + 0) > + say "1..$test_count${skip_all:+ $skip_all}" > + ;; > + *) > + test -z "$skip_all" || > + say_color warn "$skip_all" > + say "1..$test_count" > + ;; > + esac > fi > > test -d "$remove_trash" && ... this looks good to me. (tested on Linux and cygwin). Thanks! ATB, Ramsay Jones