summaryrefslogtreecommitdiffstats
path: root/external/test/test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'external/test/test.sh')
-rwxr-xr-xexternal/test/test.sh95
1 files changed, 95 insertions, 0 deletions
diff --git a/external/test/test.sh b/external/test/test.sh
new file mode 100755
index 00000000..50406330
--- /dev/null
+++ b/external/test/test.sh
@@ -0,0 +1,95 @@
+#! /bin/sh
+
+# Copyright 2013-2014 IBM Corp.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+run_binary() {
+ if [ -x "$1" ] ; then
+ $VALGRIND "$1" $2 2>> $STDERR_OUT 1>> $STDOUT_OUT
+ else
+ echo "Fatal error, cannot execute binary '$1'. Did you make?";
+ exit 1;
+ fi
+}
+
+fail_test() {
+ rm -rf "$STDERR_OUT";
+ rm -rf "$STDOUT_OUT";
+ echo "$0 ($CUR_TEST): test failed";
+ exit ${1:-1};
+}
+
+pass_test() {
+ /bin/true;
+}
+
+diff_with_result() {
+ # Explicitly diff a file with an arbitary result file
+ if [ "$#" -eq 1 ] ; then
+ if ! diff -u "$RESULT" "$1" ; then
+ fail_test;
+ fi
+ # Otherwise just diff result.out with stdout and result.err with stderr
+ else
+ if ! diff -u "${RESULT}.out" "$STDOUT_OUT" ; then
+ fail_test;
+ fi
+ if ! diff -u "${RESULT}.err" "$STDERR_OUT" ; then
+ fail_test;
+ fi
+ fi
+}
+
+run_tests() {
+ if [ $# -ne 2 ] ; then
+ echo "Usage run_tests test_dir result_dir";
+ exit 1;
+ fi
+
+ all_tests="$1";
+ res_path="$2";
+
+ if [ ! -d "$res_path" ] ; then
+ echo "Result path isn't a valid directory";
+ exit 1;
+ fi
+
+ export STDERR_OUT=$(mktemp --tmpdir external-test-stderr.XXXXXX);
+ export STDOUT_OUT=$(mktemp --tmpdir external-test-stdout.XXXXXX);
+
+
+ for the_test in $all_tests; do
+ export CUR_TEST=$(basename $the_test)
+ export RESULT="$res_path/$CUR_TEST"
+
+ . "$the_test";
+ R="$?"
+ if [ "$R" -ne 0 ] ; then
+ fail_test "$R";
+ fi
+ #reset for next test
+ > "$STDERR_OUT";
+ > "$STDOUT_OUT";
+ done
+
+ rm -rf $STDERR_OUT;
+ rm -rf $STDOUT_OUT;
+
+ echo "$0 tests passed"
+
+ exit 0;
+}
+
OpenPOWER on IntegriCloud