summaryrefslogtreecommitdiff
path: root/shell/hush_test/hush-heredoc
diff options
context:
space:
mode:
authorDenys Vlasenko2016-10-02 17:49:46 +0200
committerDenys Vlasenko2016-10-02 17:49:46 +0200
commit1b73f8471a3694d2e6b035bb7f04e1f4df943f03 (patch)
treebdfec37feb42130ca65045c29173fb46fd093f54 /shell/hush_test/hush-heredoc
parent5d6b8729ed7335c702022f4f3176573f4cf2cf5a (diff)
downloadbusybox-1b73f8471a3694d2e6b035bb7f04e1f4df943f03.zip
busybox-1b73f8471a3694d2e6b035bb7f04e1f4df943f03.tar.gz
sh testsuite: create hush-heredoc/* and move files around
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/heredoc1.right5
-rwxr-xr-xshell/hush_test/hush-heredoc/heredoc1.tests9
-rw-r--r--shell/hush_test/hush-heredoc/heredoc2.right2
-rwxr-xr-xshell/hush_test/hush-heredoc/heredoc2.tests7
-rw-r--r--shell/hush_test/hush-heredoc/heredoc3.right9
-rwxr-xr-xshell/hush_test/hush-heredoc/heredoc3.tests12
-rw-r--r--shell/hush_test/hush-heredoc/heredoc4.right1
-rwxr-xr-xshell/hush_test/hush-heredoc/heredoc4.tests3
-rw-r--r--shell/hush_test/hush-heredoc/heredoc5.right9
-rwxr-xr-xshell/hush_test/hush-heredoc/heredoc5.tests12
-rw-r--r--shell/hush_test/hush-heredoc/heredoc_backslash1.right43
-rwxr-xr-xshell/hush_test/hush-heredoc/heredoc_backslash1.tests70
-rw-r--r--shell/hush_test/hush-heredoc/heredoc_huge.right3
-rwxr-xr-xshell/hush_test/hush-heredoc/heredoc_huge.tests9
14 files changed, 194 insertions, 0 deletions
diff --git a/shell/hush_test/hush-heredoc/heredoc1.right b/shell/hush_test/hush-heredoc/heredoc1.right
new file mode 100644
index 0000000..7fc68f3
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc1.right
@@ -0,0 +1,5 @@
+qwe
+asd
+123
+456
+Ok
diff --git a/shell/hush_test/hush-heredoc/heredoc1.tests b/shell/hush_test/hush-heredoc/heredoc1.tests
new file mode 100755
index 0000000..2eeb472
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc1.tests
@@ -0,0 +1,9 @@
+cat <<000; cat <<www; cat <<eee
+000
+qwe
+asd
+www
+123
+456
+eee
+echo Ok
diff --git a/shell/hush_test/hush-heredoc/heredoc2.right b/shell/hush_test/hush-heredoc/heredoc2.right
new file mode 100644
index 0000000..a486f1a
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc2.right
@@ -0,0 +1,2 @@
+bar
+bar
diff --git a/shell/hush_test/hush-heredoc/heredoc2.tests b/shell/hush_test/hush-heredoc/heredoc2.tests
new file mode 100755
index 0000000..6d9ccb6
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc2.tests
@@ -0,0 +1,7 @@
+foo () {
+cat <<EOF && { echo "$1" ; }
+$1
+EOF
+}
+
+foo "bar"
diff --git a/shell/hush_test/hush-heredoc/heredoc3.right b/shell/hush_test/hush-heredoc/heredoc3.right
new file mode 100644
index 0000000..6ed517f
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc3.right
@@ -0,0 +1,9 @@
+exit EOF-f
+"
+echo $f
+echo `echo Hello World`
+moo
+ EOF-f
+EOF-f f
+EOF-f
+Ok
diff --git a/shell/hush_test/hush-heredoc/heredoc3.tests b/shell/hush_test/hush-heredoc/heredoc3.tests
new file mode 100755
index 0000000..938577a
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc3.tests
@@ -0,0 +1,12 @@
+f=1
+ cat <<- EOF-f""
+ exit EOF-f
+"
+echo $f
+echo `echo Hello World`
+ moo
+ EOF-f
+EOF-f f
+EOF-f
+EOF-f
+echo Ok
diff --git a/shell/hush_test/hush-heredoc/heredoc4.right b/shell/hush_test/hush-heredoc/heredoc4.right
new file mode 100644
index 0000000..371b092
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc4.right
@@ -0,0 +1 @@
+'$'
diff --git a/shell/hush_test/hush-heredoc/heredoc4.tests b/shell/hush_test/hush-heredoc/heredoc4.tests
new file mode 100755
index 0000000..642ddb3
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc4.tests
@@ -0,0 +1,3 @@
+cat <<EOF
+'$'
+EOF
diff --git a/shell/hush_test/hush-heredoc/heredoc5.right b/shell/hush_test/hush-heredoc/heredoc5.right
new file mode 100644
index 0000000..74110e3
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc5.right
@@ -0,0 +1,9 @@
+exit EOF-f
+"
+echo 1
+echo Hello World
+moo
+ EOF-f
+EOF-f f
+EOF-f
+Ok
diff --git a/shell/hush_test/hush-heredoc/heredoc5.tests b/shell/hush_test/hush-heredoc/heredoc5.tests
new file mode 100755
index 0000000..e619bde
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc5.tests
@@ -0,0 +1,12 @@
+f=1
+ cat <<- EOF-f
+ exit EOF-f
+"
+echo $f
+echo `echo Hello World`
+ moo
+ EOF-f
+EOF-f f
+EOF-f
+EOF-f
+echo Ok
diff --git a/shell/hush_test/hush-heredoc/heredoc_backslash1.right b/shell/hush_test/hush-heredoc/heredoc_backslash1.right
new file mode 100644
index 0000000..6a61148
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc_backslash1.right
@@ -0,0 +1,43 @@
+Quoted heredoc:
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
+c\
+
+Unquoted heredoc:
+a b
+a\
+ b
+ 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
+ -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
+ 123456 v-$a-\t-\-\"-\x-`-\--\z-\*-\?-
+ 123456 v-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-
+cEOF2
+
+Quoted -heredoc:
+a\
+b
+a\\
+b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
+c\
+
+Unquoted -heredoc:
+a b
+a\
+b
+ 123456 -qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
+-qwerty-\t-\-\"-\'-`-\--\z-\*-\?-
+ 123456 v-$a-\t-\-\"-\x-`-\--\z-\*-\?-
+ 123456 v-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-
+cEOF4
+
+Done: 0
diff --git a/shell/hush_test/hush-heredoc/heredoc_backslash1.tests b/shell/hush_test/hush-heredoc/heredoc_backslash1.tests
new file mode 100755
index 0000000..501af54
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc_backslash1.tests
@@ -0,0 +1,70 @@
+# Test for correct handling of backslashes.
+# Note that some lines in each heredoc start with a tab.
+
+a=qwerty
+
+echo Quoted heredoc:
+cat <<"EOF1"
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
+c\
+EOF1
+echo
+
+echo Unquoted heredoc:
+cat <<EOF2
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
+c\
+EOF2
+EOF2
+echo
+
+echo Quoted -heredoc:
+cat <<-"EOF3"
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\'-\`-\--\z-\*-\?-')
+c\
+ EOF3
+# In -heredoc case the marker is detected even if it is indented.
+echo
+
+echo Unquoted -heredoc:
+cat <<-EOF4
+a\
+ b
+a\\
+ b
+ 123456 -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ -$a-\t-\\-\"-\'-\`-\--\z-\*-\?-
+ 123456 `echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-'`
+ 123456 $(echo v'-$a-\t-\\-\"-\x-\`-\--\z-\*-\?-')
+c\
+EOF4
+ EOF4
+# The marker is not detected if preceding line ends in backslash.
+# TODO: marker should be detected even if it is split by line continuation:
+# EOF\
+# 4
+# but currently hush doesn't do it. (Tab before "4" is not allowed, though.)
+echo
+
+echo "Done: $?"
diff --git a/shell/hush_test/hush-heredoc/heredoc_huge.right b/shell/hush_test/hush-heredoc/heredoc_huge.right
new file mode 100644
index 0000000..11740f6
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc_huge.right
@@ -0,0 +1,3 @@
+546ed3f5c81c780d3ab86ada14824237 -
+546ed3f5c81c780d3ab86ada14824237 -
+End
diff --git a/shell/hush_test/hush-heredoc/heredoc_huge.tests b/shell/hush_test/hush-heredoc/heredoc_huge.tests
new file mode 100755
index 0000000..c2ec281
--- /dev/null
+++ b/shell/hush_test/hush-heredoc/heredoc_huge.tests
@@ -0,0 +1,9 @@
+# This creates 120k heredoc
+echo 'cat <<HERE | md5sum' >"$0.tmp"
+yes "123456789 123456789 123456789 123456789" | head -3000 >>"$0.tmp"
+echo 'HERE' >>"$0.tmp"
+
+yes "123456789 123456789 123456789 123456789" | head -3000 | md5sum
+. "$0.tmp"
+rm "$0.tmp"
+echo End