Stefan Beller <sbel...@google.com> 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.  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}"
        '

or

        test_expect_success title '
                echo "'\''foo'\''"
        '

but the ugliness is localized to places where single quote is
absolutely needed, and '\'' is something eyes soon get used to as an
idiom [*1*].  It does not affect every reference of variables like
enclosing with dq does.


[Footnote]

*1* That "idiom"-ness is the reason why the last example above is
    not written like this:

        test_expect_success title '
                echo "'\'foo\''"
        '

    even though the sq pair surrounding "foo" is not technically
    necessary.  It lets us think of the string as almost always is
    inside sq context, with the single exception that we step
    outside sq context and append a sq by saying bs-sq (\').

Reply via email to