Implement initial Python bindings for Open vSwitch database.
[sliver-openvswitch.git] / tests / json.at
index af53d76..56329ed 100644 (file)
@@ -1,4 +1,4 @@
-m4_define([JSON_CHECK_POSITIVE], 
+m4_define([JSON_CHECK_POSITIVE_C], 
   [AT_SETUP([$1])
    AT_KEYWORDS([json positive])
    AT_CHECK([printf %s "AS_ESCAPE([$2])" > input])
@@ -8,7 +8,22 @@ m4_define([JSON_CHECK_POSITIVE],
 ])
    AT_CLEANUP])
 
-m4_define([JSON_CHECK_NEGATIVE], 
+m4_define([JSON_CHECK_POSITIVE_PY], 
+  [AT_SETUP([$1])
+   AT_KEYWORDS([json positive Python])
+   AT_SKIP_IF([test $HAVE_PYTHON = 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([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])])
+
+m4_define([JSON_CHECK_NEGATIVE_C],
   [AT_SETUP([$1])
    AT_KEYWORDS([json negative])
    AT_CHECK([printf %s "AS_ESCAPE([$2])" > input])
@@ -18,6 +33,21 @@ m4_define([JSON_CHECK_NEGATIVE],
 ])
    AT_CLEANUP])
 
+m4_define([JSON_CHECK_NEGATIVE_PY], 
+  [AT_SETUP([$1])
+   AT_KEYWORDS([json negative Python])
+   AT_SKIP_IF([test $HAVE_PYTHON = 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([[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])])
+
 AT_BANNER([JSON -- arrays])
 
 JSON_CHECK_POSITIVE([empty array], [[ [   ] ]], [[[]]])
@@ -76,13 +106,22 @@ JSON_CHECK_NEGATIVE([null bytes not allowed],
                     [[["\u0000"]]], 
                     [error: null bytes not supported in quoted strings])
 
-AT_SETUP([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],
   [error: line 0, column 4, byte 4: unexpected end of input in quoted string
 ])
 AT_CLEANUP
 
+AT_SETUP([end of input in quoted string - Python])
+AT_KEYWORDS([json negative Python])
+AT_SKIP_IF([test $HAVE_PYTHON = no])
+AT_CHECK([printf '"xxx' > input
+$PYTHON $srcdir/test-json.py input], [1],
+  [error: line 0, column 4, byte 4: unexpected end of input in quoted string
+])
+AT_CLEANUP
+
 AT_BANNER([JSON -- objects])
 
 JSON_CHECK_POSITIVE([empty object], [[{ }]], [[{}]])