Re: [PATCH v2] tests: lint for run-away here-doc
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 24, 2017, 02:45 UTC
- Message-ID
- <xmqq37e39yv7.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20170324012912.GH20794@aiede.mtv.corp.google.com>
Jonathan Nieder <jrnieder@gmail.com> writes:
>> without failure (e.g. "cat" in the above example), which makes the >> command appear to work, without eve executing the remainder of the > > s/eve/ever/
Oops.
Show 6 quoted lines
>> + if test "OK-117" != "$(test_eval_ "(exit 117) && $1${LF}${LF}echo OK-\$?" 3>&1)"
>> + then
>> + error "bug in the test script: broken &&-chain or run-away HERE-DOC: $1"
>> fi
>
> Neat. Why the double-LF?The main part of "Neat" was your invention ;-).
Imagining how the string passed to eval looked, having two LFs was the easiest way to ensure that there is a blank line before the new "echo" (not just the last line in $1 and "echo" are on different lines), which was more visually pleasing. There was no any real functional requirement.
> In some shells, the 3>&1 will last past the function call. > Fortunately, the $() substitution creates a subshell so this doesn't > affect anything later on.
Yes, a subshell solves quite lot of problems (while possibly introducing others, though ;-).
Show 7 quoted lines
> test_eval_inner_ contains a warning not to append anything after the > commands to be evaluated, since whatever you append would pollute -x > tracing output. Fortunately, in this context we have already set > trace= so the warning does not apply. > > > Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Thanks.