summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorDenis Vlasenko2007-05-11 12:57:35 +0000
committerDenis Vlasenko2007-05-11 12:57:35 +0000
commit119b995437c52a164b2c5e51ef918c3f46b8a130 (patch)
tree831d555b51a3a6b4dd9160b1eb782f8b3d370660 /shell
parent3e9aaae5dc384ae070c49507a92b1375397954cd (diff)
downloadbusybox-119b995437c52a164b2c5e51ef918c3f46b8a130.zip
busybox-119b995437c52a164b2c5e51ef918c3f46b8a130.tar.gz
hush: reinstate hush_test, add testcases for process subst
Diffstat (limited to 'shell')
-rw-r--r--shell/hush_test/hush-parsing/noeol.right1
-rwxr-xr-xshell/hush_test/hush-parsing/noeol.tests2
-rw-r--r--shell/hush_test/hush-parsing/process_subst.right2
-rwxr-xr-xshell/hush_test/hush-parsing/process_subst.tests2
-rw-r--r--shell/hush_test/hush-vars/var.right4
-rwxr-xr-xshell/hush_test/hush-vars/var.tests10
-rwxr-xr-xshell/hush_test/run-all59
7 files changed, 80 insertions, 0 deletions
diff --git a/shell/hush_test/hush-parsing/noeol.right b/shell/hush_test/hush-parsing/noeol.right
new file mode 100644
index 0000000..e427984
--- /dev/null
+++ b/shell/hush_test/hush-parsing/noeol.right
@@ -0,0 +1 @@
+HELLO
diff --git a/shell/hush_test/hush-parsing/noeol.tests b/shell/hush_test/hush-parsing/noeol.tests
new file mode 100755
index 0000000..a93113a
--- /dev/null
+++ b/shell/hush_test/hush-parsing/noeol.tests
@@ -0,0 +1,2 @@
+# next line has no EOL!
+echo HELLO \ No newline at end of file
diff --git a/shell/hush_test/hush-parsing/process_subst.right b/shell/hush_test/hush-parsing/process_subst.right
new file mode 100644
index 0000000..8f9ab9d
--- /dev/null
+++ b/shell/hush_test/hush-parsing/process_subst.right
@@ -0,0 +1,2 @@
+TESTzzBEST
+TEST$(echo zz)BEST
diff --git a/shell/hush_test/hush-parsing/process_subst.tests b/shell/hush_test/hush-parsing/process_subst.tests
new file mode 100755
index 0000000..f8299a5
--- /dev/null
+++ b/shell/hush_test/hush-parsing/process_subst.tests
@@ -0,0 +1,2 @@
+echo "TEST`echo zz;echo;echo`BEST"
+echo "TEST`echo '$(echo zz)'`BEST"
diff --git a/shell/hush_test/hush-vars/var.right b/shell/hush_test/hush-vars/var.right
new file mode 100644
index 0000000..c13b98e
--- /dev/null
+++ b/shell/hush_test/hush-vars/var.right
@@ -0,0 +1,4 @@
+http://busybox.net
+http://busybox.net_abc
+1
+0
diff --git a/shell/hush_test/hush-vars/var.tests b/shell/hush_test/hush-vars/var.tests
new file mode 100755
index 0000000..b0637ea
--- /dev/null
+++ b/shell/hush_test/hush-vars/var.tests
@@ -0,0 +1,10 @@
+URL=http://busybox.net
+
+echo $URL
+echo ${URL}_abc
+
+true
+false; echo $?
+true
+# BUG: prints 0, must be 1
+{ false; echo $?; }
diff --git a/shell/hush_test/run-all b/shell/hush_test/run-all
new file mode 100755
index 0000000..ec83230
--- /dev/null
+++ b/shell/hush_test/run-all
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+test -x hush || { echo "No ./hush?!"; exit; }
+
+PATH="$PWD:$PATH" # for hush and recho/zecho/printenv
+export PATH
+
+THIS_SH="$PWD/hush"
+export THIS_SH
+
+do_test()
+{
+ test -d "$1" || return 0
+ (
+ cd "$1" || { echo "cannot cd $1!"; exit 1; }
+ for x in run-*; do
+ test -f "$x" || continue
+ case "$x" in
+ "$0"|run-minimal|run-gprof) ;;
+ *.orig|*~) ;;
+ #*) echo $x ; sh $x ;;
+ *)
+ sh "$x" >"../$1-$x.fail" 2>&1 && \
+ { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail";
+ ;;
+ esac
+ done
+ # Many bash run-XXX scripts just do this,
+ # no point in duplication it all over the place
+ for x in *.tests; do
+ test -x "$x" || continue
+ name="${x%%.tests}"
+ test -f "$name.right" || continue
+ {
+ "$THIS_SH" "./$x" >"$name.xx" 2>&1
+ diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail"
+ } && echo "$1/$x: ok" || echo "$1/$x: fail"
+ done
+ )
+}
+
+# Main part of this script
+# Usage: run-all [directories]
+
+if [ $# -lt 1 ]; then
+ # All sub directories
+ modules=`ls -d hush-*`
+
+ for module in $modules; do
+ do_test $module
+ done
+else
+ while [ $# -ge 1 ]; do
+ if [ -d $1 ]; then
+ do_test $1
+ fi
+ shift
+ done
+fi