On Tue, Feb 26, 2019 at 05:10:30PM +0100, Ævar Arnfjörð Bjarmason wrote: > But 4 years after this was added in a136f6d8ff ("test-lib.sh: support -x > option for shell-tracing", 2014-10-10) we got -x, and then with "-i -v -x": > > expecting success: > test_path_is_dir .git && > test_path_is_file doesnotexist && > test_path_is_file .git/config > > + test_path_is_dir .git > + test -d .git > + test_path_is_file doesnotexist > + test -f doesnotexist > + echo File doesnotexist doesn't exist. > File doesnotexist doesn't exist. > + false > error: last command exited with $?=1 > not ok 1 - check files > > But by just using "test -d/-e": the much shorter: > > + test -d .git > + test -f doesnotexist > error: last command exited with $?=1 > not ok 1 - check files > > So I wonder if these days we shouldn't do this the other way around and > get rid of these. Every test_* wrapper we add adds a bit of cognitive > overload when you have to remember Git's specific shellscript dialect. I don't have a strong opinion, but I do agree that with "-x" it's nicer without the wrappers. I typically re-run with just "-v" on a failure, and only turn to "-x" if the verbose output isn't helpful. However, with the rise of multi-platform CI jobs which try to collect as much information as possible in the initial run, I do find myself looking at "-x" more often. As Gábor notes, you can't run every script with "-x". But I find it's pretty consistent these days (and totally so if you have a recent bash). I dunno. Maybe people on other platforms (who might not have bash) would care more. I had a vague notion that there was some reason (portability?) that we preferred to have the wrappers. But as your patch shows, they really are just calling "test" and nothing else. > test_must_be_empty () { > + # We don't want to remove this as noted in ec10b018e7 ("tests: > + # use 'test_must_be_empty' instead of '! test -s'", > + # 2018-08-19) > test_path_is_file "$1" && > if test -s "$1" > then You'd still want it to become "test -f" though, right? -Peff