]> gitweb.michael.orlitzky.com - libsvgtiny.git/blobdiff - test/runtest.sh
Ensure we report failures better
[libsvgtiny.git] / test / runtest.sh
index f1c33ea69377a3faa89d81c6d188ea204dfed76d..708f84a7e582dfb459028ce91effc5c5a486c3d0 100755 (executable)
@@ -1,18 +1,83 @@
 #!/bin/sh 
+#
+# run test images through libnssvg and count results
+# This file is part of libsvgtiny
+#
+# Licensed under the MIT License,
+#                http://opensource.org/licenses/mit-license.php
+# Copyright 2016 Vincent Sanders <vince@netsurf-browser.org>
 
 TEST_PATH=$1
-TEST_OUT=${TEST_PATH}/svg
+TEST_OUT=${TEST_PATH}/mvg
+TEST_LOG=${TEST_PATH}/test.log
 
 mkdir -p ${TEST_OUT}
 
+echo "SVG tests" > ${TEST_LOG}
+
+# svg test directories
+
+# netsurf test svg
+SVGTESTS="test/data/*.svg"
+
+# netsurf afl generated svg suite
+SVGTESTS="${SVGTESTS} test/ns-afl-svg/*.svg"
+
 svgdecode()
 {
     OUTF=$(basename ${1} .svg)
-    ${TEST_PATH}/test_decode_svg ${1} > ${TEST_OUT}/${OUTF}.svg
+    CMPF=$(dirname  ${1})/${OUTF}.mvg
+    echo "SVG:${1}" >> ${TEST_LOG}
+    ${TEST_PATH}/test_decode_svg ${1} 1.0 ${TEST_OUT}/${OUTF}.mvg 2>> ${TEST_LOG}
+    ECODE=$?
+
+    echo "Exit code:${ECODE}" >> ${TEST_LOG}
+    if [ "${ECODE}" -gt 0 ];then
+       return ${ECODE}
+    fi
+
+    if [ -f "${CMPF}" ]; then
+       cmp ${CMPF} ${TEST_OUT}/${OUTF}.ppm >> ${TEST_LOG} 2>> ${TEST_LOG}
+       if [ "$?" -ne 0 ]; then
+           return 128
+       fi
+    fi
+
+    #convert mvg:${TEST_OUT}/${OUTF}.mvg png:${TEST_OUT}/${OUTF}.png
+
+    return 0
 }
 
+SVGTESTTOTC=0
+SVGTESTPASSC=0
+SVGTESTFAILC=0
+SVGTESTERRC=0
+
+echo "Testing SVG decode"
 
-for SVG in $(ls test/data/*.svg);do
+for SVG in $(ls ${SVGTESTS});do
+    SVGTESTTOTC=$((SVGTESTTOTC+1))
     svgdecode ${SVG}
+    ECODE=$?
+    if [ "${ECODE}" -gt 127 ];then
+       SVGTESTERRC=$((SVGTESTERRC+1))
+    else
+       if [ "${ECODE}" -gt 0 ];then
+           SVGTESTFAILC=$((SVGTESTFAILC+1))
+       else
+           SVGTESTPASSC=$((SVGTESTPASSC+1))
+       fi
+    fi
 done
 
+echo "Tests:${SVGTESTTOTC} Pass:${SVGTESTPASSC} Fail:${SVGTESTFAILC} Error:${SVGTESTERRC}"
+
+# exit code
+if [ "${SVGTESTFAILC}" -gt 0 ]; then
+    exit 1
+fi
+if [ "${SVGTESTERRC}" -gt 0 ]; then
+    exit 2
+fi
+
+exit 0