Thread (1 message) 1 message, 1 author, 2017-03-24

Re: [PATCH v2] tests: lint for run-away here-doc

From: Junio C Hamano <hidden>
Date: 2017-03-24 02:45:26

Jonathan Nieder [off-list ref] writes:
quoted
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.
quoted
+		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 ;-).
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 <redacted>
Thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help