#
run_output_test()
{
+ EXPECTED_EXITVAL=0
if [ "$1" = "-o" ] ; then
TEST_OUTPUT="$2"
- shift
- shift
+ shift 2
+ fi
+ if [ "$1" = "--exit" ] ; then
+ EXPECTED_EXITVAL="$2"
+ shift 2
fi
TEST_COMMAND="$1"
shift
TEST_OUTPUT=${TEST_COMMAND}
fi
- REDIR_OUTPUT="> \"${TEST_OUTPUT}.out\""
+ REDIR_OUTPUT="> \"${TEST_OUTPUT}.out\" 2>&1"
if [ $VERBOSE -gt 1 ] ; then
- REDIR_OUTPUT="| tee \"${TEST_OUTPUT}.out\""
+ REDIR_OUTPUT="2>&1 | tee \"${TEST_OUTPUT}.out\""
fi
if [ $use_valgrind -eq 1 ] ; then
--show-reachable=yes \
--run-libc-freeres=yes \
"\"${top_builddir}/${TEST_COMMAND}\"" \"\$@\" ${REDIR_OUTPUT}
- err=$?
+ exitval=$?
else
eval "\"${top_builddir}/${TEST_COMMAND}"\" \"\$@\" ${REDIR_OUTPUT}
- err=$?
+ exitval=$?
fi
- if [ $err -ne 0 ] ; then
- echo "ERROR: \"${TEST_COMMAND} $@\" exited with non-zero exit status: $err" 1>&2
+ if [ $exitval -ne $EXPECTED_EXITVAL ] ; then
+ echo "ERROR: \"${TEST_COMMAND} $@\" exited with incorrect exit status: $err != $EXPECTED_EXITVAL" 1>&2
+ err=1
fi
if [ $use_valgrind -eq 1 ] ; then
#include <assert.h>
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
#include "json.h"
tmp = json_tokener_parse("1.234");
json_object_set_double(tmp, 12.3);
const char *serialized = json_object_to_json_string(tmp);
- fprintf(stderr, "%s\n", serialized);
+ if (getenv("JSONC_TEST_TRACE") != NULL)
+ // This output might be different on different systems
+ fprintf(stderr, "%s\n", serialized);
assert(strncmp(serialized, "12.3", 4) == 0);
json_object_put(tmp);
printf("PARSE AND SET PASSED\n");
printf("flags: 0x%x, key: %s, index: %ld, value: %s\n", flags,
(jso_key ? jso_key : "(null)"), (jso_index ? (long)*jso_index : -1L),
json_object_to_json_string(jso));
+ fflush(stdout);
return JSON_C_VISIT_RETURN_CONTINUE;
}
printf("flags: 0x%x, key: %s, index: %ld, value: %s\n", flags,
(jso_key ? jso_key : "(null)"), (jso_index ? (long)*jso_index : -1L),
json_object_to_json_string(jso));
+ fflush(stdout);
return 100;
}
================================
flags: 0x0, key: (null), index: -1, value: { "obj1": 123, "obj2": { "subobj1": "aaa", "subobj2": "bbb", "subobj3": [ "elem1", "elem2", true ] }, "obj3": 1.234, "obj4": [ true, false, null ] }
+ERROR: invalid return value from json_c_visit userfunc: 100
json_c_visit(err_return)=-1
================================