summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/run_all.sh21
-rwxr-xr-xtests/run_tests.sh42
2 files changed, 42 insertions, 21 deletions
diff --git a/tests/run_all.sh b/tests/run_all.sh
deleted file mode 100755
index 5727afb..0000000
--- a/tests/run_all.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/sh
-
-r=0
-for t in test_*; do
- cd $t
- php ../test.php > have
- echo -ne "\e[1m$t\e[0m: "
- if sed 's/\s*//' < have | grep -v '^$' | cmp -s want; then
- echo "OK"
- rm *.transc.php
- else
- echo "FAILED"
- for tpl in *.tpl; do
- php ../dump_ast.php < $tpl > $tpl.ast
- done
- r=1
- fi
- cd ..
-done
-
-exit $r
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
new file mode 100755
index 0000000..4e46977
--- /dev/null
+++ b/tests/run_tests.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+set -e
+
+run() {
+ ( # So we don't have to cd ..
+ cd "$1" || return 1
+
+ php ../test.php > have
+
+ printf '\e[1m%s\e[0m: ' "$1"
+ if sed 's/\s*//' < have | grep -v '^$' | cmp -s want; then
+ echo "OK"
+ rm ./*.transc.php
+ else
+ echo "FAILED"
+ for tpl in *.tpl; do
+ php ../dump_ast.php < "$tpl" > "$tpl.ast"
+ done
+ return 1
+ fi
+ )
+}
+
+run_many() {
+ retval=0
+ while [ $# -gt 0 ]; do
+ if ! run "$1"; then
+ retval=1
+ fi
+
+ shift
+ done
+
+ return $retval
+}
+
+if [ $# -eq 0 ]; then
+ run_many test_*
+else
+ run_many "$@"
+fi