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>
maint
Jeff King 2024-07-10 04:39:16 -04:00 committed by Junio C Hamano
parent a4a5f282f5
commit 0c7d630220
8 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,2 @@
2 echo "we should find this" ?!AMP?!
3 echo "even though our heredoc has its indent stripped"

View File

@ -0,0 +1,4 @@
test_expect_success 'here-doc-body-indent' - <<-\EOT
echo "we should find this"
echo "even though our heredoc has its indent stripped"
EOT

View File

@ -0,0 +1,7 @@
2 echo "outer here-doc does not allow indented end-tag" ?!AMP?!
3 cat >file <<-\EOF &&
4 but this inner here-doc
5 does allow indented EOF
6 EOF
7 echo "missing chain after" ?!AMP?!
8 echo "but this line is OK because it's the end"

View File

@ -0,0 +1,9 @@
test_expect_success 'here-doc-body-pathological' - <<\EOF
echo "outer here-doc does not allow indented end-tag"
cat >file <<-\EOF &&
but this inner here-doc
does allow indented EOF
EOF
echo "missing chain after"
echo "but this line is OK because it's the end"
EOF

View File

@ -0,0 +1,7 @@
2 echo "missing chain before" ?!AMP?!
3 cat >file <<-\EOF &&
4 inside inner here-doc
5 these are not shell commands
6 EOF
7 echo "missing chain after" ?!AMP?!
8 echo "but this line is OK because it's the end"

View File

@ -0,0 +1,9 @@
test_expect_success 'here-doc-body' - <<\EOT
echo "missing chain before"
cat >file <<-\EOF &&
inside inner here-doc
these are not shell commands
EOF
echo "missing chain after"
echo "but this line is OK because it's the end"
EOT

View File

@ -0,0 +1,2 @@
8 echo "actual test commands" ?!AMP?!
9 echo "that should be checked"

View File

@ -0,0 +1,10 @@
# This is obviously a ridiculous thing to do, but we should be able
# to handle two here-docs on the same line, and attribute them
# correctly.
test_expect_success "$(cat <<END_OF_PREREQS)" 'here-doc-double' - <<\EOT
SOME
PREREQS
END_OF_PREREQS
echo "actual test commands"
echo "that should be checked"
EOT