threads / patch / 38430

patchFix unclosed here document in t3301.sh

Subject: [PATCH] Fix unclosed here document in t3301.sh

## tl;dr

3 messages between Jan 22, 2015 and Jan 22, 2015. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

Kacper Kornet· Jan 22, 2015, 11:59 UTC · lore

Commit 908a3203632a02568df230c0fccf9a2cd8da24e6 introduced indentation to here documents in t3301.sh. However in one place <<-EOF was missing -, which broke this test when run with mksh-50d. This commit fixes it.

Signed-off-by: Kacper Kornet <draenog@pld-linux.org>
---
 t/t3301-notes.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to t/t3301-notes.sh +1 −1
diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh
index 245406a..433f925 100755
--- a/t/t3301-notes.sh
+++ b/t/t3301-notes.sh
@@ -658,7 +658,7 @@ test_expect_success '--show-notes=* adds to GIT_NOTES_DISPLAY_REF' '
 '
 
 test_expect_success '--no-standard-notes' '
-	cat >expect-commits <<EOF
+	cat >expect-commits <<-EOF
 		commit 2c125331118caba0ff8238b7f4958ac6e93fe39c
 		Author: A U Thor <author@example.com>
 		Date:   Thu Apr 7 15:18:13 2005 -0700
-- 
2.2.2
Johan Herland· Jan 22, 2015, 12:21 UTC · re: Kacper Kornet · lore

Re: [PATCH] Fix unclosed here document in t3301.sh

On Thu, Jan 22, 2015 at 12:59 PM, Kacper Kornet <draenog@pld-linux.org> wrote:
Show 5 quoted lines
> Commit 908a3203632a02568df230c0fccf9a2cd8da24e6 introduced  indentation
> to here documents in t3301.sh. However in one place <<-EOF was missing
> -, which broke this test when run with mksh-50d. This commit fixes it.
>
> Signed-off-by: Kacper Kornet <draenog@pld-linux.org>
Acked-by: Johan Herland <johan@herland.net>
Show 19 quoted lines
> ---
>  t/t3301-notes.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/t/t3301-notes.sh b/t/t3301-notes.sh
> index 245406a..433f925 100755
> --- a/t/t3301-notes.sh
> +++ b/t/t3301-notes.sh
> @@ -658,7 +658,7 @@ test_expect_success '--show-notes=* adds to GIT_NOTES_DISPLAY_REF' '
>  '
>
>  test_expect_success '--no-standard-notes' '
> -       cat >expect-commits <<EOF
> +       cat >expect-commits <<-EOF
>                 commit 2c125331118caba0ff8238b7f4958ac6e93fe39c
>                 Author: A U Thor <author@example.com>
>                 Date:   Thu Apr 7 15:18:13 2005 -0700
> --
> 2.2.2
-- 
Johan Herland, <johan@herland.net>
www.herland.net
Jeff King· Jan 22, 2015, 12:38 UTC · re: Kacper Kornet · lore

Re: [PATCH] Fix unclosed here document in t3301.sh

On Thu, Jan 22, 2015 at 12:59:36PM +0100, Kacper Kornet wrote:
> Commit 908a3203632a02568df230c0fccf9a2cd8da24e6 introduced  indentation
> to here documents in t3301.sh. However in one place <<-EOF was missing
> -, which broke this test when run with mksh-50d. This commit fixes it.

This is definitely the right direction, but I was a little surprised it worked at all on other shells! Both bash and dash end the here-doc at the end of the input (in this case the end of the eval string). They end up sucking the EOF and the follow-on commands into the here-doc, and the test literally does nothing except the call to cat.

Bash does print a warning in this case. It would be nice to upgrade it to an error (so at least bash users could easily detect the buggy script), but I don't see any way to do so. I guess running with mksh is a good substitute. :)

However, in most such instances of this problem, the shell will notice and barf, because it syntactically expects more on the next line:

  $ sh -c '
    cat >foo <<EOF &&
    whatever
    EOF
    do_something
  '
  sh: 6: Syntax error: end of file unexpected

So the problem in this instance is that the here-doc marker is wrong _and_ the test accidentally broke the &&-chaining:

>  test_expect_success '--no-standard-notes' '
> -	cat >expect-commits <<EOF
> +	cat >expect-commits <<-EOF
The ideal line here would be:
  cat >expect-commits <<-EOF &&
-Peff

← back to recent threads