diff options
Diffstat (limited to 'bin/ksh/tests/heredoc.t')
-rw-r--r-- | bin/ksh/tests/heredoc.t | 110 |
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 +--- + |