summaryrefslogtreecommitdiff
path: root/bin/ksh/tests/heredoc.t
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ksh/tests/heredoc.t')
-rw-r--r--bin/ksh/tests/heredoc.t110
1 files changed, 91 insertions, 19 deletions
diff --git a/bin/ksh/tests/heredoc.t b/bin/ksh/tests/heredoc.t
index 27c28302258..21feb925cea 100644
--- a/bin/ksh/tests/heredoc.t
+++ b/bin/ksh/tests/heredoc.t
@@ -20,33 +20,18 @@ stdin:
hi\
there$a
stuff
- EOF
-expected-stdout:
- hi\
- there$a
- stuff
----
-
-name: heredoc-3
-description:
- Check quoted here-documents don't have \newline processing done
- on them.
-stdin:
- cat << 'EOF'
- hi\
- there
EO\
F
EOF
- true
expected-stdout:
hi\
- there
+ there$a
+ stuff
EO\
F
---
-name: heredoc-4
+name: heredoc-3
description:
Check that newline isn't needed after heredoc-delimiter marker.
stdin: !
@@ -59,7 +44,7 @@ expected-stdout:
there
---
-name: heredoc-5
+name: heredoc-4
description:
Check that an error occurs if the heredoc-delimiter is missing.
stdin: !
@@ -70,3 +55,90 @@ expected-exit: e > 0
expected-stderr-pattern: /.*/
---
+name: heredoc-5
+description:
+ Check that backslash quotes a $, ` and \ and kills a \newline
+stdin:
+ a=BAD
+ b=ok
+ cat << EOF
+ h\${a}i
+ h\\${b}i
+ th\`echo not-run\`ere
+ th\\`echo is-run`ere
+ fol\\ks
+ more\\
+ last \
+ line
+ EOF
+expected-stdout:
+ h${a}i
+ h\oki
+ th`echo not-run`ere
+ th\is-runere
+ fol\ks
+ more\
+ last line
+---
+
+name: heredoc-6
+description:
+ Check that \newline in initial here-delim word doesn't imply
+ a quoted here-doc.
+stdin:
+ a=i
+ cat << EO\
+ F
+ h$a
+ there
+ EOF
+expected-stdout:
+ hi
+ there
+---
+
+name: heredoc-7
+description:
+ Check that double quoted $ expressions in here delimiters are
+ not expanded and match the delimiter.
+ POSIX says only quote removal is applied to the delimiter.
+stdin:
+ a=b
+ cat << "E$a"
+ hi
+ h$a
+ hb
+ E$a
+ echo done
+expected-stdout:
+ hi
+ h$a
+ hb
+ done
+---
+
+name: heredoc-8
+description:
+ Check that double quoted escaped $ expressions in here
+ delimiters are not expanded and match the delimiter.
+ POSIX says only quote removal is applied to the delimiter
+ (\ counts as a quote).
+stdin:
+ a=b
+ cat << "E\$a"
+ hi
+ h$a
+ h\$a
+ hb
+ h\b
+ E$a
+ echo done
+expected-stdout:
+ hi
+ h$a
+ h\$a
+ hb
+ h\b
+ done
+---
+