Refactor decoder input stream
[jansson.git] / test / suites / invalid / run
index 7cb3243..f8394d7 100755 (executable)
@@ -9,19 +9,49 @@ is_test() {
     test -d $test_path
 }
 
+do_run() {
+    variant=$1
+    s=".$1"
+
+    strip=0
+    if [ "$variant" = "strip" ]; then
+        # This test should not be stripped
+        [ -f $test_path/nostrip ] && return
+        strip=1
+    fi
+
+    STRIP=$strip $json_process \
+        <$test_path/input >$test_log/stdout$s 2>$test_log/stderr$s
+    valgrind_check $test_log/stderr$s || return 1
+
+    ref=error
+    [ -f $test_path/error$s ] && ref=error$s
+
+    if ! cmp -s $test_path/$ref $test_log/stderr$s; then
+        echo $variant > $test_log/variant
+        return 1
+    fi
+}
+
 run_test() {
-    $json_process <$test_path/input >$test_log/stdout 2>$test_log/stderr
-    valgrind_check $test_log/stderr || return 1
-    cmp -s $test_path/error $test_log/stderr
+    do_run normal && do_run strip
 }
 
 show_error() {
     valgrind_show_error && return
 
+    read variant < $test_log/variant
+    s=".$variant"
+
+    echo "VARIANT: $variant"
+
     echo "EXPECTED ERROR:"
-    nl -bn $test_path/error
+    ref=error
+    [ -f $test_path/error$s ] && ref=error$s
+    nl -bn $test_path/$ref
+
     echo "ACTUAL ERROR:"
-    nl -bn $test_log/stderr
+    nl -bn $test_log/stderr$s
 }
 
 . $top_srcdir/test/scripts/run-tests.sh