On Wed, Jan 11, 2017 at 3:28 PM, Junio C Hamano <[email protected]> wrote:
> Stefan Beller <[email protected]> writes:
>
>>> Preparing the expected output "expect" outside test_expect_success
>>> block is also old-school. Move it inside the new test?
>>
>> I looked into that. What is our current stance on using single/double quotes?
>
> Using dq around executable part, i.e.
>
> test_expect_success title "
> echo \"'foo'\"
> "
>
> is a million-times more grave sin even if the test initially does
> not refer to any variable in its body. Somebody will eventually
> need to add a line that refers to a variable and either forgets to
> quote \$ in front or properly quotes it.
agreed.
> The former makes the
> variable interpolated while the arguments to the test_expect_success
> is prepared (which is a bug) and the latter makes the result quite
> ugly, like so:
>
> test_expect_success title "
> sq=\' var=foo &&
> echo \"\${sq}\$value\${sq}\"
> "
>
> Enclosing the body always in sq-pair does mean something ugly like
> this from the beginning once you need to use sq inside:
>
> test_expect_success title '
> sq='\'' &&
> echo "${sq}foo${sq}"
> '
This one fails
error: bug in the test script: broken &&-chain:
sq=' &&
echo "${sq}foo${sq}"
both other occurrences of using ${sq} are defining sq outside
(one as sq=\' and the other as sq="'")
So I think we either have to keep sq out of the test,
sq="'"
test_expect_success title '
echo "${sq}foo${sq}"
'
or do the echo/printf trick inside:
test_expect_success title '
sq=$(echo -e "\x27") &&
echo "${sq}foo${sq}"
'
Eh, I just realize the '\'' works inside here-doc, too.
Nevermind then, I'll resend it with just quoted sq in the here-doc then.
Thanks,
Stefan