Git fork

chainlint.pl: add tests for test body in heredoc

The chainlint.pl script recently learned about the upcoming:

test_expect_success 'some test' - <<\EOT
TEST_BODY
EOT

syntax, where TEST_BODY should be checked in the usual way. Let's make
sure this works by adding a few tests. The "here-doc-body" file tests
the basic syntax, including an embedded here-doc which we should still
be able to recognize.

Likewise the "here-doc-body-indent" checks the same thing, but using the
"<<-" operator. We wouldn't expect this to be used normally, but we
would not want to accidentally miss a body that uses it. The
"pathological" variant checks the opposite: we don't get confused by an
indented tag within the here-doc body.

The "here-doc-double" tests the handling of two here-doc tags on the
same line. This is not something we'd expect anybody to do in practice,
but the code was written defensively to handle this, so let's make sure
it works.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

authored by

Jeff King and committed by
Junio C Hamano
0c7d6302 a4a5f282

+50
+2
t/chainlint/here-doc-body-indent.expect
··· 1 + 2 echo "we should find this" ?!AMP?! 2 + 3 echo "even though our heredoc has its indent stripped"
+4
t/chainlint/here-doc-body-indent.test
··· 1 + test_expect_success 'here-doc-body-indent' - <<-\EOT 2 + echo "we should find this" 3 + echo "even though our heredoc has its indent stripped" 4 + EOT
+7
t/chainlint/here-doc-body-pathological.expect
··· 1 + 2 echo "outer here-doc does not allow indented end-tag" ?!AMP?! 2 + 3 cat >file <<-\EOF && 3 + 4 but this inner here-doc 4 + 5 does allow indented EOF 5 + 6 EOF 6 + 7 echo "missing chain after" ?!AMP?! 7 + 8 echo "but this line is OK because it's the end"
+9
t/chainlint/here-doc-body-pathological.test
··· 1 + test_expect_success 'here-doc-body-pathological' - <<\EOF 2 + echo "outer here-doc does not allow indented end-tag" 3 + cat >file <<-\EOF && 4 + but this inner here-doc 5 + does allow indented EOF 6 + EOF 7 + echo "missing chain after" 8 + echo "but this line is OK because it's the end" 9 + EOF
+7
t/chainlint/here-doc-body.expect
··· 1 + 2 echo "missing chain before" ?!AMP?! 2 + 3 cat >file <<-\EOF && 3 + 4 inside inner here-doc 4 + 5 these are not shell commands 5 + 6 EOF 6 + 7 echo "missing chain after" ?!AMP?! 7 + 8 echo "but this line is OK because it's the end"
+9
t/chainlint/here-doc-body.test
··· 1 + test_expect_success 'here-doc-body' - <<\EOT 2 + echo "missing chain before" 3 + cat >file <<-\EOF && 4 + inside inner here-doc 5 + these are not shell commands 6 + EOF 7 + echo "missing chain after" 8 + echo "but this line is OK because it's the end" 9 + EOT
+2
t/chainlint/here-doc-double.expect
··· 1 + 8 echo "actual test commands" ?!AMP?! 2 + 9 echo "that should be checked"
+10
t/chainlint/here-doc-double.test
··· 1 + # This is obviously a ridiculous thing to do, but we should be able 2 + # to handle two here-docs on the same line, and attribute them 3 + # correctly. 4 + test_expect_success "$(cat <<END_OF_PREREQS)" 'here-doc-double' - <<\EOT 5 + SOME 6 + PREREQS 7 + END_OF_PREREQS 8 + echo "actual test commands" 9 + echo "that should be checked" 10 + EOT