Re: [PATCH 29/29] t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
- From
Jeff King <peff@peff.net>
- Date
- Jun 26, 2018, 21:01 UTC
- Message-ID
- <20180626210100.GA3682@sigill.intra.peff.net>
- In-Reply-To
- <CAPig+cRvgsu-6f+mzjGVDWTVhFrhLY5MsNxEQBJYckKDpeaMAg@mail.gmail.com>
On Tue, Jun 26, 2018 at 04:46:18PM -0400, Eric Sunshine wrote:
Show 17 quoted lines
> > I'm not sure if there's a good solution, though. Even if you retained > > the subshells and instead did a chain-lint inside each subshell, like > > this: > > > > (exit 117) && > > one && > > ( > > (exit 117) && > > cd foo > > two > > ) && > > three > > I thought of that too, but the inner (exit 117) doesn't even get > invoked unless there is &&-chain breakage somewhere above that point > (for instance, if "one" lacks "&&"), so the inner (exit 117) doesn't > participate in the linting process at all.
Oh, right. Not only does it not fix the problem, it's totally unworkable. :)
Show 8 quoted lines
> Some of these dangers can be de-thoothed during the linting phase by
> defining do-nothing shell functions:
>
> cp () { :; }
> mv () { :; }
> ln () { :; }
>
> That, at least, makes the scariest case ("rm") much less so.Now that's an interesting idea. We can't catch every dangerous action (notably ">" would be hard to override), but it should be pretty cheap to cover some obvious ones.
-Peff