hush: reinstate hush_test, add testcases for process subst
authorDenis Vlasenko <vda.linux@googlemail.com>
Fri, 11 May 2007 12:57:35 +0000 (12:57 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Fri, 11 May 2007 12:57:35 +0000 (12:57 -0000)
shell/hush_test/hush-parsing/noeol.right [new file with mode: 0644]
shell/hush_test/hush-parsing/noeol.tests [new file with mode: 0755]
shell/hush_test/hush-parsing/process_subst.right [new file with mode: 0644]
shell/hush_test/hush-parsing/process_subst.tests [new file with mode: 0755]
shell/hush_test/hush-vars/var.right [new file with mode: 0644]
shell/hush_test/hush-vars/var.tests [new file with mode: 0755]
shell/hush_test/run-all [new file with mode: 0755]

diff --git a/shell/hush_test/hush-parsing/noeol.right b/shell/hush_test/hush-parsing/noeol.right
new file mode 100644 (file)
index 0000000..e427984
--- /dev/null
@@ -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 (executable)
index 0000000..a93113a
--- /dev/null
@@ -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 (file)
index 0000000..8f9ab9d
--- /dev/null
@@ -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 (executable)
index 0000000..f8299a5
--- /dev/null
@@ -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 (file)
index 0000000..c13b98e
--- /dev/null
@@ -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 (executable)
index 0000000..b0637ea
--- /dev/null
@@ -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 (executable)
index 0000000..ec83230
--- /dev/null
@@ -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