Save stderr from test output, allow for non-zero exit code from tests.

This commit is contained in:
Eric Hawicz
2026-06-21 13:43:11 -04:00
parent 1d658982e5
commit bb9c1238ad
4 changed files with 20 additions and 9 deletions
+13 -8
View File
@@ -83,10 +83,14 @@ fi
# #
run_output_test() run_output_test()
{ {
EXPECTED_EXITVAL=0
if [ "$1" = "-o" ] ; then if [ "$1" = "-o" ] ; then
TEST_OUTPUT="$2" TEST_OUTPUT="$2"
shift shift 2
shift fi
if [ "$1" = "--exit" ] ; then
EXPECTED_EXITVAL="$2"
shift 2
fi fi
TEST_COMMAND="$1" TEST_COMMAND="$1"
shift shift
@@ -94,9 +98,9 @@ run_output_test()
TEST_OUTPUT=${TEST_COMMAND} TEST_OUTPUT=${TEST_COMMAND}
fi fi
REDIR_OUTPUT="> \"${TEST_OUTPUT}.out\"" REDIR_OUTPUT="> \"${TEST_OUTPUT}.out\" 2>&1"
if [ $VERBOSE -gt 1 ] ; then if [ $VERBOSE -gt 1 ] ; then
REDIR_OUTPUT="| tee \"${TEST_OUTPUT}.out\"" REDIR_OUTPUT="2>&1 | tee \"${TEST_OUTPUT}.out\""
fi fi
if [ $use_valgrind -eq 1 ] ; then if [ $use_valgrind -eq 1 ] ; then
@@ -108,15 +112,16 @@ run_output_test()
--show-reachable=yes \ --show-reachable=yes \
--run-libc-freeres=yes \ --run-libc-freeres=yes \
"\"${top_builddir}/${TEST_COMMAND}\"" \"\$@\" ${REDIR_OUTPUT} "\"${top_builddir}/${TEST_COMMAND}\"" \"\$@\" ${REDIR_OUTPUT}
err=$? exitval=$?
else else
eval "\"${top_builddir}/${TEST_COMMAND}"\" \"\$@\" ${REDIR_OUTPUT} eval "\"${top_builddir}/${TEST_COMMAND}"\" \"\$@\" ${REDIR_OUTPUT}
err=$? exitval=$?
fi fi
if [ $err -ne 0 ] ; then if [ $exitval -ne $EXPECTED_EXITVAL ] ; then
echo "ERROR: \"${TEST_COMMAND} $@\" exited with non-zero exit status: $err" 1>&2 echo "ERROR: \"${TEST_COMMAND} $@\" exited with incorrect exit status: $err != $EXPECTED_EXITVAL" 1>&2
err=1
fi fi
if [ $use_valgrind -eq 1 ] ; then if [ $use_valgrind -eq 1 ] ; then
+4 -1
View File
@@ -4,6 +4,7 @@
#include <assert.h> #include <assert.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h>
#include "json.h" #include "json.h"
@@ -106,7 +107,9 @@ int main(int argc, char **argv)
tmp = json_tokener_parse("1.234"); tmp = json_tokener_parse("1.234");
json_object_set_double(tmp, 12.3); json_object_set_double(tmp, 12.3);
const char *serialized = json_object_to_json_string(tmp); 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); assert(strncmp(serialized, "12.3", 4) == 0);
json_object_put(tmp); json_object_put(tmp);
printf("PARSE AND SET PASSED\n"); printf("PARSE AND SET PASSED\n");
+2
View File
@@ -77,6 +77,7 @@ static int emit_object(json_object *jso, int flags, json_object *parent_jso, con
printf("flags: 0x%x, key: %s, index: %ld, value: %s\n", flags, printf("flags: 0x%x, key: %s, index: %ld, value: %s\n", flags,
(jso_key ? jso_key : "(null)"), (jso_index ? (long)*jso_index : -1L), (jso_key ? jso_key : "(null)"), (jso_index ? (long)*jso_index : -1L),
json_object_to_json_string(jso)); json_object_to_json_string(jso));
fflush(stdout);
return JSON_C_VISIT_RETURN_CONTINUE; return JSON_C_VISIT_RETURN_CONTINUE;
} }
@@ -148,5 +149,6 @@ static int err_return(json_object *jso, int flags, json_object *parent_jso, cons
printf("flags: 0x%x, key: %s, index: %ld, value: %s\n", flags, printf("flags: 0x%x, key: %s, index: %ld, value: %s\n", flags,
(jso_key ? jso_key : "(null)"), (jso_index ? (long)*jso_index : -1L), (jso_key ? jso_key : "(null)"), (jso_index ? (long)*jso_index : -1L),
json_object_to_json_string(jso)); json_object_to_json_string(jso));
fflush(stdout);
return 100; return 100;
} }
+1
View File
@@ -84,6 +84,7 @@ json_c_visit(stop_array)=0
================================ ================================
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 ] } 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 json_c_visit(err_return)=-1
================================ ================================