Jeff King <[email protected]> writes:
> Neither of those is true, but I think:
>
> cat >expect <<-EOF &&
> Execution of '\''false $submodulesha1'\'' failed in ...
> EOF
>
> is safer and less surprising. The single-quote handling is unfortunate and
> ugly, but necessary to get them into the shell snippet in the first
> place. I notice the others tests in this script set up the expect file
> outside of a block. You could also do something like:
>
> sq=\'
> test_expect_success '...' '
> cat >expect <<-EOF
> Execution of ${sq}false $submodulesha1${sq} ...
> '
>
> but I'm not sure if that is any more readable.
Yup, my eyes have long learned to coast over '\'' as an idiomatic
symbol, but I agree that it is harder to see until you get used to
it (and I do not think it is particularly useful skill to be able to
spot '\'' as a logical unit, either). ${sq} thing may make it easier
to read but I think the one you did in the first quoted part in this
reply is good enough.
-- >8 --
Subject: t7406: correct test case for submodule-update initial population
There are three issues with the test:
* The syntax of the here-doc was wrong, such that the entire test was
sucked into the here-doc, which is why the test succeeded successfully.
* The variable $submodulesha1 was not expanded as it was inside a quoted
here text. We do not want to quote EOF marker for this.
* The redirection from the git command to the output file for comparison
was wrong as the -C operator from git doesn't apply to the redirect path.
Also we're interested in stderr of that command.
Noticed-by: Jan Palus <[email protected]>
Signed-off-by: Stefan Beller <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
---
t/t7406-submodule-update.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
index 8c086a429b..a70fe96ad6 100755
--- a/t/t7406-submodule-update.sh
+++ b/t/t7406-submodule-update.sh
@@ -425,11 +425,11 @@ test_expect_success 'submodule update - command in
.git/config catches failure -
'
test_expect_success 'submodule update - command run for initial population of
submodule' '
- cat <<-\ EOF >expect
+ cat >expect <<-EOF &&
Execution of '\''false $submodulesha1'\'' failed in submodule path
'\''submodule'\''
- EOF &&
+ EOF
rm -rf super/submodule &&
- test_must_fail git -C super submodule update >../actual &&
+ test_must_fail git -C super submodule update 2>actual &&
test_cmp expect actual &&
git -C super submodule update --checkout
'