From: Jeff King Date: Fri, 21 Apr 2017 20:15:28 GMT Subject: Re: [PATCH] test-lib: abort when can't remove trash directory Message-ID: <20170421201527.wdtxhox3p4g35gex@sigill.intra.peff.net> In-Reply-To: <20170420165230.5951-1-szeder.dev@gmail.com> On Thu, Apr 20, 2017 at 06:52:30PM +0200, SZEDER Gábor wrote: > diff --git a/t/test-lib.sh b/t/test-lib.sh > index 13b569682..e9e6f677d 100644 > --- a/t/test-lib.sh > +++ b/t/test-lib.sh > @@ -761,9 +761,12 @@ test_done () { > say "1..$test_count$skip_all" > fi > > - test -d "$remove_trash" && > + test -d "$remove_trash" || > + error "Tests passed but trash directory already removed before test cleanup; aborting" I think I found out why this "test -d" was here in the first place: $ ./t0000-basic.sh --debug [...] # passed all 77 test(s) 1..77 error: Tests passed but trash directory already removed before test cleanup; aborting When --debug is in use, we do not set $remove_trash. The original was relying on 'test -d ""' to return false. I think this whole removal block should probably be moved inside a conditional like: if test -n "$remove_trash" then ... fi I also wonder if we should come up with a better name than $remove_trash. A script which unknowingly overwrites that variable would be disastrous. Perhaps we should drop it entirely and just do: if test -z "$debug" then test -d "$TRASH_DIRECTORY" || error "Tests passed but..." [and so forth...] fi -Peff