tests: avoid syntax triggering old dash bug
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Wed, 13 Feb 2019 11:59:51 +0000 (12:59 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 13 Feb 2019 21:46:06 +0000 (13:46 -0800)
Avoid a bug in dash that's been fixed ever since its
ec2c84d ("[PARSER] Fix clobbering of checkkwd", 2011-03-15)[1] first
released with dash v0.5.7 in July 2011. This failing test was
introduced in 5f9674243d ("config: add --expiry-date", 2017-11-18).

This fixes 1/2 tests failing on Debian Lenny & Squeeze. The other
failure is due to 1b42f45255 ("git-svn: apply "svn.pathnameencoding"
before URL encoding", 2016-02-09).

The dash bug is triggered by this test because the heredoc contains a
command embedded in "$()" with a "{}" block coming right after
it. Refactoring the "$()" to e.g. be a variable that was set earlier
will also work around it, but let's instead break up the "EOF" and the
"{}".

An earlier version of this patch[2] mitigated the issue by breaking
the "$()" out of the "{}" block, that worked, but just because it
broke up the "EOF" and "{}" block. Putting e.g. "echo &&" between the
two would also work.

1. https://git.kernel.org/pub/scm/utils/dash/dash.git/
2. https://public-inbox.org/git/20181127164253.9832-1-avarab@gmail.com/

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1300-config.sh
index 9652b241c7cf182a4b26cac5f474183bd166ceaa..428177c390dbe726c2aa9df4eb9c6f9d54766049 100755 (executable)
@@ -892,6 +892,7 @@ test_expect_success 'get --expiry-date' '
        1510348087
        0
        EOF
+       : "work around heredoc parsing bug fixed in dash 0.5.7 (in ec2c84d)" &&
        {
                echo "$rel_out $(git config --expiry-date date.valid1)"
                git config --expiry-date date.valid2 &&