-m4_define([JSON_CHECK_POSITIVE_C],
+m4_define([JSON_CHECK_POSITIVE_C],
[AT_SETUP([$1])
AT_KEYWORDS([json positive])
AT_CHECK([printf %s "AS_ESCAPE([$2])" > input])
AT_CAPTURE_FILE([input])
- AT_CHECK([test-json $4 input], [0], [stdout], [])
+ AT_CHECK([ovstest test-json $4 input], [0], [stdout], [])
AT_CHECK([cat stdout], [0], [$3
])
AT_CLEANUP])
-m4_define([JSON_CHECK_POSITIVE_PY],
+# JSON_CHECK_POSITIVE_PY(TITLE, INPUT, OUTPUT, TEST-JSON-ARGS,
+# PYTHON-CHCEK, PYTHON-BIN)
+#
+m4_define([JSON_CHECK_POSITIVE_PY],
[AT_SETUP([$1])
AT_KEYWORDS([json positive Python])
- AT_SKIP_IF([test $HAVE_PYTHON = no])
+ AT_SKIP_IF([test $5 = no])
AT_CHECK([printf %s "AS_ESCAPE([$2])" > input])
AT_CAPTURE_FILE([input])
- AT_CHECK([$PYTHON $srcdir/test-json.py $4 input], [0], [stdout], [])
+ AT_CHECK([$6 $srcdir/test-json.py $4 input], [0], [stdout], [])
AT_CHECK([cat stdout], [0], [$3
])
AT_CLEANUP])
m4_define([JSON_CHECK_POSITIVE],
[JSON_CHECK_POSITIVE_C([$1 - C], [$2], [$3], [$4])
- JSON_CHECK_POSITIVE_PY([$1 - Python], [$2], [$3], [$4])])
+ JSON_CHECK_POSITIVE_PY([$1 - Python2], [$2], [$3], [$4],
+ [$HAVE_PYTHON], [$PYTHON])
+ JSON_CHECK_POSITIVE_PY([$1 - Python3], [$2], [$3], [$4],
+ [$HAVE_PYTHON3], [$PYTHON3])])
+
+m4_define([JSON_CHECK_POSITIVE_PY23],
+ [JSON_CHECK_POSITIVE_PY([$1 - Python2], [$2], [$3], [$4],
+ [$HAVE_PYTHON], [$PYTHON])
+ JSON_CHECK_POSITIVE_PY([$1 - Python3], [$2], [$3], [$4],
+ [$HAVE_PYTHON3], [$PYTHON3])])
m4_define([JSON_CHECK_NEGATIVE_C],
[AT_SETUP([$1])
AT_KEYWORDS([json negative])
AT_CHECK([printf %s "AS_ESCAPE([$2])" > input])
AT_CAPTURE_FILE([input])
- AT_CHECK([test-json $4 input], [1], [stdout], [])
+ AT_CHECK([ovstest test-json $4 input], [1], [stdout], [])
AT_CHECK([[sed 's/^error: [^:]*:/error:/' < stdout]], [0], [$3
])
AT_CLEANUP])
+# JSON_CHECK_NEGATIVE_PY(TITLE, INPUT, OUTPUT, TEST-JSON-ARGS,
+# PYTHON-CHCEK, PYTHON-BIN)
+#
m4_define([JSON_CHECK_NEGATIVE_PY],
[AT_SETUP([$1])
AT_KEYWORDS([json negative Python])
- AT_SKIP_IF([test $HAVE_PYTHON = no])
+ AT_SKIP_IF([test $5 = no])
AT_CHECK([printf %s "AS_ESCAPE([$2])" > input])
AT_CAPTURE_FILE([input])
- AT_CHECK([$PYTHON $srcdir/test-json.py $4 input], [1], [stdout], [])
+ AT_CHECK([$6 $srcdir/test-json.py $4 input], [1], [stdout], [])
AT_CHECK([[sed 's/^error: [^:]*:/error:/' < stdout]], [0], [$3
])
AT_CLEANUP])
m4_define([JSON_CHECK_NEGATIVE],
[JSON_CHECK_NEGATIVE_C([$1 - C], [$2], [$3], [$4])
- JSON_CHECK_NEGATIVE_PY([$1 - Python], [$2], [$3], [$4])])
+ JSON_CHECK_NEGATIVE_PY([$1 - Python2], [$2], [$3], [$4],
+ [$HAVE_PYTHON], [$PYTHON])
+ JSON_CHECK_NEGATIVE_PY([$1 - Python3], [$2], [$3], [$4],
+ [$HAVE_PYTHON3], [$PYTHON3])])
AT_BANNER([JSON -- arrays])
JSON_CHECK_NEGATIVE([null bytes not allowed],
[[["\u0000"]]],
[error: null bytes not supported in quoted strings])
+dnl Check for regression against a prior bug.
+JSON_CHECK_POSITIVE([properly quoted backslash at end of string],
+ [[["\\"]]],
+ [[["\\"]]])
+JSON_CHECK_NEGATIVE([stray backslash at end of string],
+ [[["abcd\"]]],
+ [error: unexpected end of input in quoted string])
AT_SETUP([end of input in quoted string - C])
AT_KEYWORDS([json negative])
-AT_CHECK([printf '"xxx' | test-json -], [1],
+AT_CHECK([printf '"xxx' | ovstest test-json -], [1],
[error: line 0, column 4, byte 4: unexpected end of input in quoted string
])
AT_CLEANUP
# It seems likely that the following test will fail on some system that
# rounds slightly differently in arithmetic or in printf, but I'd like
# to keep it this way until we run into such a system.
-JSON_CHECK_POSITIVE(
- [large integers that overflow to reals],
+JSON_CHECK_POSITIVE_C(
+ [C - large integers that overflow to reals],
[[[9223372036854775807000, -92233720368547758080000]]],
[[[9.22337203685478e+21,-9.22337203685478e+22]]])
+JSON_CHECK_POSITIVE_PY23(
+ [large integers that overflow to reals],
+ [[[9223372036854775807000, -92233720368547758080000]]],
+ [[[9.223372036854776e+21,-9.223372036854776e+22]]])
JSON_CHECK_POSITIVE(
[negative zero],
# It seems likely that the following test will fail on some system that
# rounds slightly differently in arithmetic or in printf, but I'd like
# to keep it this way until we run into such a system.
-JSON_CHECK_POSITIVE(
- [+/- DBL_MAX],
+JSON_CHECK_POSITIVE_C(
+ [C - +/- DBL_MAX],
[[[1.7976931348623157e+308, -1.7976931348623157e+308]]],
[[[1.79769313486232e+308,-1.79769313486232e+308]]])
+JSON_CHECK_POSITIVE_PY23(
+ [+/- DBL_MAX],
+ [[[1.7976931348623157e+308, -1.7976931348623157e+308]]],
+ [[[1.7976931348623157e+308,-1.7976931348623157e+308]]])
JSON_CHECK_POSITIVE(
[negative reals],
AT_SETUP([input may not be empty])
AT_KEYWORDS([json negative])
-AT_CHECK([test-json /dev/null], [1], [error: line 0, column 0, byte 0: empty input stream
+AT_CHECK([ovstest test-json /dev/null], [1], [error: line 0, column 0, byte 0: empty input stream
])
AT_CLEANUP