On Tue, Feb 26, 2019 at 05:10:30PM +0100, Ævar Arnfjörð Bjarmason wrote: > However. I wonder in general if we've re-visited the utility of these > wrappers and maybe other similar wrappers after -x was added. > 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": '-x' tracing doesn't work in all test scripts, unless it is run with a Bash version already supporting BASH_XTRACEFD, i.e. v4.1 or later. Notably the default Bash shipped in macOS is somewhere around v3.2. > And at least to me whenever I have a test failure the first thing I do > is try with -x (if I wasn't already using it). Under that the wrapper > output is more verbose and no more helpful. It's immediately clear > what's going on with: > > + test -f doesnotexist > error: last command exited with $?=1 > > Whereas: > > + test -f doesnotexist > + echo File doesnotexist doesn't exist. > File doesnotexist doesn't exist. > + false > error: last command exited with $?=1 > > Gives me the same thing, but I have to read 5 lines instead of 2 that > ultimately don't tell me any more (and a bit of "huh, 'false' returned > 1? Of course! Oh! It's faking things up and it's the 'echo' that > matters..."). I didn't find this to be an issue, but because of functions like 'test_seq' and 'test_must_fail' I've thought about suppressing '-x' output for test helpers (haven't actually done anything about it, though). > Looking over test-lib-functions.sh this patch would do it. I couldn't > spot any other functions redundant to -x: > > diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh > index 80402a428f..b3a95b4968 100644 > --- a/t/test-lib-functions.sh > +++ b/t/test-lib-functions.sh > @@ -555,33 +555,6 @@ test_external_without_stderr () { > fi > } > > -# debugging-friendly alternatives to "test [-f|-d|-e]" > -# The commands test the existence or non-existence of $1. $2 can be > -# given to provide a more precise diagnosis. Note the second parameter; though, of course, you could argue that we use it so rarely that it wouldn't really be missed. > -test_path_is_file () { > - if ! test -f "$1" > - then > - echo "File $1 doesn't exist. $2" > - false > - fi > -} > - > -test_path_is_dir () { > - if ! test -d "$1" > - then > - echo "Directory $1 doesn't exist. $2" > - false > - fi > -} > - > -test_path_exists () { > - if ! test -e "$1" > - then > - echo "Path $1 doesn't exist. $2" > - false > - fi > -} > - > # Check if the directory exists and is empty as expected, barf otherwise. > test_dir_is_empty () { > test_path_is_dir "$1" && > @@ -593,19 +566,6 @@ test_dir_is_empty () { > fi > } > > -test_path_is_missing () { > - if test -e "$1" > - then > - echo "Path exists:" > - ls -ld "$1" This 'ls' command gives a bit of additional info. > - if test $# -ge 1 > - then > - echo "$*" > - fi > - false > - fi > -} > - > # test_line_count checks that a file has the number of lines it > # ought to. For example: > # > @@ -849,6 +809,9 @@ verbose () { > # otherwise. > > 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) Indeed. > test_path_is_file "$1" && This still uses 'test_path_is_file'. > if test -s "$1" > then