Regression test driver now can read different expected output files
[cacao.git] / tests / regression / Test.sh
index 7438eba8466abf5ee392c81882de3180e5f9d748..bb42e65fdb73a5f1594e1459f1d3827b06430b1a 100644 (file)
@@ -4,44 +4,77 @@ JAVA=$1
 TEST=$2
 SRCDIR=$3
 
+#
+# test which classlibrary was used
+# depending on whether classpath or openjdk class library was used we may expect different results from the tests, this may e.g.
+# by simple things like intentation when printing stack traces or even more subtile stuff ...
+#
+$JAVA -XX:+PrintConfig 2>&1 | grep gnu.classpath.boot.library.path: > /dev/null
+if [ $? -eq "0" ]; then
+IS_CLASSPATH=1
+POSTFIX="cp"
+fi
+$JAVA -XX:+PrintConfig 2>&1 | grep sun.boot.library.path  > /dev/null
+if [ $? -eq "0" ]; then
+IS_OPENJDK=1
+POSTFIX="ojdk"
+fi
+
+if [ -z $POSTFIX ]; then
+echo "Warning: Could not detect classlibrary the java VM uses, assuming openJDK"
+POSTFIX="ojdk"
+fi
+
+# mostly classpath and openjdk deliver same results
+REFERENCE_OUTPUT=$SRCDIR/$TEST.output
+REFERENCE_2OUTPUT=$SRCDIR/$TEST.2output
+
+# if they do not exist, we try the postfixed versions
+if [ ! -f $REFERENCE_OUTPUT ]; then
+REFERENCE_OUTPUT=$SRCDIR/$TEST.output.$POSTFIX
+fi
+if [ ! -f $REFERENCE_2OUTPUT ]; then
+REFERENCE_2OUTPUT=$SRCDIR/$TEST.2output.$POSTFIX
+fi
+
 echo -n "$TEST: "
 
 $JAVA $TEST > $TEST.thisoutput 2>&1
 
 if [ $? -eq "0" ]; then
     # no Error returned
-    if [ -f $SRCDIR/$TEST.2output ]; then
+    if [ -f $REFERENCE_2OUTPUT ]; then
         # Error should have been returned
         echo "OK, but wrong return value: $?"
         head $TEST.thisoutput
         exit
     fi
        
-    cmp -s $SRCDIR/$TEST.output $TEST.thisoutput
+    cmp -s $REFERENCE_OUTPUT $TEST.thisoutput
 
     if [ $? -eq "0" ]; then
         echo "OK"
     else
         echo "FAILED"
-        diff -u $SRCDIR/$TEST.output $TEST.thisoutput
+        diff -u $REFERENCE_OUTPUT $TEST.thisoutput
     fi
 
 else
     # Error returned
-    if [ ! -f $SRCDIR/$TEST.2output ]; then
+    if [ ! -f $REFERENCE_2OUTPUT ]; then
         # No Error should have been returned
         echo "FAILED, but wrong return value: $?"
         head $TEST.this2output
         exit
     fi
 
-    cmp -s $SRCDIR/$TEST.2output $TEST.thisoutput
+    cmp -s $REFERENCE_2OUTPUT $TEST.thisoutput
 
     if [ $? -eq "0" ]; then
         echo "OK"
     else
         echo "FAILED"
-        diff -u $SRCDIR/$TEST.2output $TEST.thisoutput
+        diff -u $REFERENCE_2OUTPUT $TEST.thisoutput
     fi
 fi