summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--t/chainlint.sed24
-rw-r--r--t/chainlint/for-loop.expect2
-rw-r--r--t/chainlint/here-doc-close-subshell.expect2
-rw-r--r--t/chainlint/here-doc-multi-line-command-subst.expect2
-rw-r--r--t/chainlint/here-doc-multi-line-string.expect2
-rw-r--r--t/chainlint/here-doc.expect8
-rw-r--r--t/chainlint/if-then-else.expect2
-rw-r--r--t/chainlint/nested-here-doc.expect6
-rw-r--r--t/chainlint/subshell-here-doc.expect10
-rw-r--r--t/chainlint/t7900-subtree.expect4
-rw-r--r--t/chainlint/while-loop.expect2
11 files changed, 35 insertions, 29 deletions
diff --git a/t/chainlint.sed b/t/chainlint.sed
index 2f786f890d..0e575c0c62 100644
--- a/t/chainlint.sed
+++ b/t/chainlint.sed
@@ -62,20 +62,20 @@
# receives similar treatment.
#
# Swallowing here-docs with arbitrary tags requires a bit of finesse. When a
-# line such as "cat <<EOF >out" is seen, the here-doc tag is moved to the front
-# of the line enclosed in angle brackets as a sentinel, giving "<EOF>cat >out".
+# line such as "cat <<EOF" is seen, the here-doc tag is copied to the front of
+# the line enclosed in angle brackets as a sentinel, giving "<EOF>cat <<EOF".
# As each subsequent line is read, it is appended to the target line and a
# (whitespace-loose) back-reference match /^<(.*)>\n\1$/ is attempted to see if
# the content inside "<...>" matches the entirety of the newly-read line. For
# instance, if the next line read is "some data", when concatenated with the
-# target line, it becomes "<EOF>cat >out\nsome data", and a match is attempted
+# target line, it becomes "<EOF>cat <<EOF\nsome data", and a match is attempted
# to see if "EOF" matches "some data". Since it doesn't, the next line is
# attempted. When a line consisting of only "EOF" (and possible whitespace) is
-# encountered, it is appended to the target line giving "<EOF>cat >out\nEOF",
+# encountered, it is appended to the target line giving "<EOF>cat <<EOF\nEOF",
# in which case the "EOF" inside "<...>" does match the text following the
# newline, thus the closing here-doc tag has been found. The closing tag line
# and the "<...>" prefix on the target line are then discarded, leaving just
-# the target line "cat >out".
+# the target line "cat <<EOF".
#------------------------------------------------------------------------------
# incomplete line -- slurp up next line
@@ -90,8 +90,7 @@
# command to which it was attached)
/<<-*[ ]*[\\'"]*[A-Za-z0-9_]/ {
/"[^"]*<<[^"]*"/bnotdoc
- s/^\(.*\)<<-*[ ]*[\\'"]*\([A-Za-z0-9_][A-Za-z0-9_]*\)['"]*/<\2>\1<</
- s/[ ]*<<//
+ s/^\(.*<<-*[ ]*\)[\\'"]*\([A-Za-z0-9_][A-Za-z0-9_]*\)['"]*/<\2>\1\2/
:hered
N
/^<\([^>]*\)>.*\n[ ]*\1[ ]*$/!{
@@ -238,6 +237,7 @@ s/.*\n//
:cont
# retrieve and print previous line
x
+s/?!HERE?!/<</g
n
bslurp
@@ -278,8 +278,7 @@ bfolded
# found here-doc -- swallow it to avoid false hits within its body (but keep
# the command to which it was attached)
:heredoc
-s/^\(.*\)<<-*[ ]*[\\'"]*\([A-Za-z0-9_][A-Za-z0-9_]*\)['"]*/<\2>\1<</
-s/[ ]*<<//
+s/^\(.*\)<<\(-*[ ]*\)[\\'"]*\([A-Za-z0-9_][A-Za-z0-9_]*\)['"]*/<\3>\1?!HERE?!\2\3/
:hdocsub
N
/^<\([^>]*\)>.*\n[ ]*\1[ ]*$/!{
@@ -293,6 +292,7 @@ bfolded
# found "case ... in" -- pass through untouched
:case
x
+s/?!HERE?!/<</g
n
/^[ ]*esac/bslurp
bcase
@@ -320,6 +320,7 @@ bchkchn
:nest
x
:nstslrp
+s/?!HERE?!/<</g
n
# closing ")" on own line -- stop nested slurp
/^[ ]*)/bnstcl
@@ -342,6 +343,7 @@ bchkchn
# found multi-line "{...\n...}" block -- pass through untouched
:block
x
+s/?!HERE?!/<</g
n
# closing "}" -- stop block slurp
/}/bchkchn
@@ -352,13 +354,17 @@ bblock
:clssolo
x
s/\( ?!AMP?!\)* ?!AMP?!$//
+s/?!HERE?!/<</g
p
x
+s/?!HERE?!/<</g
b
# found closing "...)" -- exit subshell loop
:close
x
+s/?!HERE?!/<</g
p
x
+s/?!HERE?!/<</g
b
diff --git a/t/chainlint/for-loop.expect b/t/chainlint/for-loop.expect
index b74df064c5..6671b8cd84 100644
--- a/t/chainlint/for-loop.expect
+++ b/t/chainlint/for-loop.expect
@@ -2,7 +2,7 @@
for i in a b c
do
echo $i ?!AMP?!
- cat
+ cat <<-EOF
done ?!AMP?!
for i in a b c; do
echo $i &&
diff --git a/t/chainlint/here-doc-close-subshell.expect b/t/chainlint/here-doc-close-subshell.expect
index e748526570..2af9ced71c 100644
--- a/t/chainlint/here-doc-close-subshell.expect
+++ b/t/chainlint/here-doc-close-subshell.expect
@@ -1,2 +1,2 @@
(
- cat)
+ cat <<-INPUT)
diff --git a/t/chainlint/here-doc-multi-line-command-subst.expect b/t/chainlint/here-doc-multi-line-command-subst.expect
index f1248f8ade..f8b3aa73c4 100644
--- a/t/chainlint/here-doc-multi-line-command-subst.expect
+++ b/t/chainlint/here-doc-multi-line-command-subst.expect
@@ -1,5 +1,5 @@
(
- x=$(bobble &&
+ x=$(bobble <<-END &&
wiffle) ?!AMP?!
echo $x
)
diff --git a/t/chainlint/here-doc-multi-line-string.expect b/t/chainlint/here-doc-multi-line-string.expect
index 7e883b252e..2578191ca8 100644
--- a/t/chainlint/here-doc-multi-line-string.expect
+++ b/t/chainlint/here-doc-multi-line-string.expect
@@ -1,4 +1,4 @@
(
- cat && echo "multi-line string" ?!AMP?!
+ cat <<-TXT && echo "multi-line string" ?!AMP?!
bap
)
diff --git a/t/chainlint/here-doc.expect b/t/chainlint/here-doc.expect
index 8449eb2e02..110059ba58 100644
--- a/t/chainlint/here-doc.expect
+++ b/t/chainlint/here-doc.expect
@@ -1,7 +1,7 @@
-boodle wobba gorgo snoot wafta snurb &&
+boodle wobba gorgo snoot wafta snurb <<EOF &&
-cat >foo &&
+cat <<-Arbitrary_Tag_42 >foo &&
-cat >boo &&
+cat <<zump >boo &&
-horticulture
+horticulture <<EOF
diff --git a/t/chainlint/if-then-else.expect b/t/chainlint/if-then-else.expect
index debcf7b756..44d86c3597 100644
--- a/t/chainlint/if-then-else.expect
+++ b/t/chainlint/if-then-else.expect
@@ -8,7 +8,7 @@
echo foo
else
echo foo &&
- cat
+ cat <<-EOF
fi ?!AMP?!
echo poodle
) &&
diff --git a/t/chainlint/nested-here-doc.expect b/t/chainlint/nested-here-doc.expect
index 2a51205d32..e3bef63f75 100644
--- a/t/chainlint/nested-here-doc.expect
+++ b/t/chainlint/nested-here-doc.expect
@@ -1,7 +1,7 @@
-cat >foop &&
+cat <<ARBITRARY >foop &&
(
- cat &&
- cat ?!AMP?!
+ cat <<-INPUT_END &&
+ cat <<-EOT ?!AMP?!
foobar
)
diff --git a/t/chainlint/subshell-here-doc.expect b/t/chainlint/subshell-here-doc.expect
index b7250ca753..029d129299 100644
--- a/t/chainlint/subshell-here-doc.expect
+++ b/t/chainlint/subshell-here-doc.expect
@@ -1,10 +1,10 @@
(
- echo wobba gorgo snoot wafta snurb &&
- cat >bip ?!AMP?!
- echo >bop
+ echo wobba gorgo snoot wafta snurb <<-EOF &&
+ cat <<EOF >bip ?!AMP?!
+ echo <<-EOF >bop
) &&
(
- cat >bup &&
- cat >bup3 &&
+ cat <<-ARBITRARY >bup &&
+ cat <<-ARBITRARY3 >bup3 &&
meep
)
diff --git a/t/chainlint/t7900-subtree.expect b/t/chainlint/t7900-subtree.expect
index 215aca01c2..1cccc7bf7e 100644
--- a/t/chainlint/t7900-subtree.expect
+++ b/t/chainlint/t7900-subtree.expect
@@ -1,9 +1,9 @@
(
chks="sub1sub2sub3sub4" &&
- chks_sub=$(cat | sed "s,^,sub dir/,"
+ chks_sub=$(cat <<TXT | sed "s,^,sub dir/,"
) &&
chkms="main-sub1main-sub2main-sub3main-sub4" &&
- chkms_sub=$(cat | sed "s,^,sub dir/,"
+ chkms_sub=$(cat <<TXT | sed "s,^,sub dir/,"
) &&
subfiles=$(git ls-files) &&
check_equal "$subfiles" "$chkms$chks"
diff --git a/t/chainlint/while-loop.expect b/t/chainlint/while-loop.expect
index e2813b378e..0d3a9b3d12 100644
--- a/t/chainlint/while-loop.expect
+++ b/t/chainlint/while-loop.expect
@@ -2,7 +2,7 @@
while true
do
echo foo ?!AMP?!
- cat
+ cat <<-EOF
done ?!AMP?!
while true; do
echo foo &&