diff options
Diffstat (limited to 'jcnf/yajl/run_tests.sh')
-rw-r--r-- | jcnf/yajl/run_tests.sh | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/jcnf/yajl/run_tests.sh b/jcnf/yajl/run_tests.sh new file mode 100644 index 0000000..174932f --- /dev/null +++ b/jcnf/yajl/run_tests.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +DIFF_FLAGS="-u" +if [[ `uname` == *W32* ]] ; then + DIFF_FLAGS="-wu" +fi + +# find test binary on both platforms. allow the caller to force a +# particular test binary (useful for non-cmake build systems). +if [ -z "$testBin" ]; then + testBin="../build/test/Debug/yajl_test.exe" + if [[ ! -x $testBin ]] ; then + testBin="../build/test/yajl_test" + if [[ ! -x $testBin ]] ; then + echo "cannot execute test binary: '$testBin'" + exit 1; + fi + fi +fi + +echo "using test binary: $testBin" + +let testsSucceeded=0 +let testsTotal=0 + +for file in cases/*.json ; do + allowComments="-c" + + # if the filename starts with dc_, we disallow comments for this test + if [[ $(basename $file) == dc_* ]] ; then + allowComments="" + fi + echo -n " test case: '$file': " + let iter=1 + success="success" + + # parse with a read buffer size ranging from 1-31 to stress stream parsing + while (( $iter < 32 )) && [ $success == "success" ] ; do + $testBin $allowComments -b $iter < $file > ${file}.test 2>&1 + diff ${DIFF_FLAGS} ${file}.gold ${file}.test + if [[ $? == 0 ]] ; then + if (( $iter == 31 )) ; then let testsSucceeded+=1 ; fi + else + success="FAILURE" + let iter=32 + fi + let iter+=1 + rm ${file}.test + done + + echo $success + let testsTotal+=1 +done + +echo $testsSucceeded/$testsTotal tests successful + +if [[ $testsSucceeded != $testsTotal ]] ; then + exit 1 +fi + +exit 0 |