Re: Do test-path_is_{file,dir,exists} make sense anymore with -x?
- From
Jeff King <peff@peff.net>
- Date
- Feb 26, 2019, 18:24 UTC
- Message-ID
- <20190226182407.GF19606@sigill.intra.peff.net>
- In-Reply-To
- <86va1630g4.fsf@matthieu-moy.fr>
On Tue, Feb 26, 2019 at 06:48:43PM +0100, Matthieu Moy wrote:
Show 6 quoted lines
> > '-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. > > According to http://www.tldp.org/LDP/abs/html/bashver4.html#AEN21183, > bash 4.1 was released on May, 2010. Are you sure macOS is _that_ late?
It's not "late", it's "never". Bash 4 switched to GPLv3.
> I also tried with dash, and -x seems to work fine too (I use "works with > dash" as a heuristic for "should word on any shell", but it doesn't > always work).
Yes, "-x" works everywhere. The problem is scripts which capture the stderr of subshells or functions, which then get polluted by "-x" output. You can fix that in two ways:
1. Use bash 4.1+, which works around that with BASH_XTRACEFD.
2. Don't do that. Gábor fixed most such instances already, except the
ones in t1510. That one automatically disables "-x" tracing.So I don't know what you tried exactly, but you should be able to successfully run with "-x" on any script. Including t1510, but you just won't get tracing output then.
> If -x doesn't work in some setups, it may be a good reason to wait a bit > before trashing test_path_is_*, but if it's clear enough that the vast > majority of platforms get -x, then why not trash these wrappers indeed.
I do think it basically works everywhere these days.
-Peff