Fix the xml_diff program to also check trailing events (after </root>)
[tatoo.git] / tools / do_test.sh
diff --git a/tools/do_test.sh b/tools/do_test.sh
new file mode 100755 (executable)
index 0000000..05163b8
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+TESTPROG="../main.native"
+
+usage() {
+    echo "error: missing input, query file, xml_diff or $TESTPROG"
+    echo "usage: $0 file.xml"
+}
+
+FILE="$1"
+RESULTS="$FILE".results
+QUERIES="$FILE".queries
+
+if test ! -f "$FILE" -o ! -f "$QUERIES" -o ! -f "$TESTPROG" -o ! -f xml_diff
+then
+   usage;
+   exit 1
+fi
+
+
+mkdir -p "$RESULTS"
+
+cat "$QUERIES" | grep -v '^#' | ( TOTAL=0; TESTS=0;
+while read qname q
+do
+    TOTAL=$(($TOTAL + 1))
+    echo -n "Testing $qname: $q ... "
+    "$TESTROG" "$FILE" "$q" > "$RESULTS"/"$qname"_test.xml 2> "$RESULTS"/"$qname"_test.log
+    ./xml_diff "$RESULTS"/"$qname"_test.xml "$RESULTS"/"$qname".xml 2>> "$RESULTS"/"$qname"_test.log
+    case "$?" in
+        0)
+            TESTS=$(($TESTS + 1))
+            echo ok
+            ;;
+        *)
+            echo failed
+            echo ------- output -----------
+            cat "$RESULTS"/"$qname"_test.log
+            echo --------------------------
+            ;;
+    esac
+done;
+echo "Summary: $TESTS/$TOTAL tests successfull"
+)