diff options
author | Denys Vlasenko | 2018-07-24 17:08:04 +0200 |
---|---|---|
committer | Denys Vlasenko | 2018-07-24 17:10:18 +0200 |
commit | 63c42afaa43d42def05dfbca1f4e10c7314b1f77 (patch) | |
tree | b88436d25560b74b7f626739c4ab14c12aff219a /shell/hush_test/hush-heredoc | |
parent | 41ef41b3e0a16c9f8524870a2dc4f768c237939e (diff) | |
download | busybox-63c42afaa43d42def05dfbca1f4e10c7314b1f77.zip busybox-63c42afaa43d42def05dfbca1f4e10c7314b1f77.tar.gz |
hush: add "heredoc.tests" from ash, tweak ash "is a function" message
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/hush_test/hush-heredoc')
-rw-r--r-- | shell/hush_test/hush-heredoc/heredoc.right | 20 | ||||
-rwxr-xr-x | shell/hush_test/hush-heredoc/heredoc.tests | 97 |
2 files changed, 117 insertions, 0 deletions
diff --git a/shell/hush_test/hush-heredoc/heredoc.right b/shell/hush_test/hush-heredoc/heredoc.right new file mode 100644 index 0000000..9b9e2aa --- /dev/null +++ b/shell/hush_test/hush-heredoc/heredoc.right @@ -0,0 +1,20 @@ +there +one - alpha +two - beta +three - gamma +hi\ +there$a +stuff +hi\ +there +EO\ +F +hi +hi +tab 1 +tab 2 +tab 3 +abc +def ghi +jkl mno +fff is a function diff --git a/shell/hush_test/hush-heredoc/heredoc.tests b/shell/hush_test/hush-heredoc/heredoc.tests new file mode 100755 index 0000000..39345c5 --- /dev/null +++ b/shell/hush_test/hush-heredoc/heredoc.tests @@ -0,0 +1,97 @@ +# check order and content of multiple here docs + +cat << EOF1 << EOF2 +hi +EOF1 +there +EOF2 + +while read line1; do + read line2 <&3 + echo $line1 - $line2 +done <<EOF1 3<<EOF2 +one +two +three +EOF1 +alpha +beta +gamma +EOF2 + + +# check quoted here-doc is protected + +a=foo +cat << 'EOF' +hi\ +there$a +stuff +EOF + +# check that quoted here-documents don't have \newline processing done + +cat << 'EOF' +hi\ +there +EO\ +F +EOF +true + +# check that \newline is removed at start of here-doc +cat << EO\ +F +hi +EOF + +# check that \newline removal works for here-doc delimiter +cat << EOF +hi +EO\ +F + +# check operation of tab removal in here documents +cat <<- EOF + tab 1 + tab 2 + tab 3 + EOF + +# check appending of text to file from here document +rm -f /tmp/bash-zzz +cat > /tmp/bash-zzz << EOF +abc +EOF +cat >> /tmp/bash-zzz << EOF +def ghi +jkl mno +EOF +cat /tmp/bash-zzz +rm -f /tmp/bash-zzz + +# make sure command printing puts the here-document as the last redirection +# on the line, and the function export code preserves syntactic correctness +fff() +{ + ed /tmp/foo <<ENDOFINPUT >/dev/null +/^name/d +w +q +ENDOFINPUT +aa=1 +} + +type fff +#ash# export -f fff +#ash# ${THIS_SH} -c 'type fff' + +#hush# bash warns: "here-document at line N delimited by end-of-file", +#hush# ash allows it, +#hush# hush errors out for now: +#hush# # check that end of file delimits a here-document +#hush# # THIS MUST BE LAST! +#hush# +#hush# cat << EOF +#hush# hi +#hush# there |