aboutsummaryrefslogtreecommitdiffhomepage
path: root/conformance/conformance_python.py
diff options
context:
space:
mode:
authorGravatar Josh Haberman <jhaberman@gmail.com>2015-12-02 13:21:42 -0800
committerGravatar Josh Haberman <jhaberman@gmail.com>2015-12-02 13:21:42 -0800
commita3faf080e355d2d89cb7a93a92f76ea5462c2ad0 (patch)
treea2be046e6c7a459dc26e08b8cfc4bc2021c9b6ef /conformance/conformance_python.py
parent325392dd6128ad9915f758e37307c12bcc56f064 (diff)
Added JSON support to Python conformance tests.
Diffstat (limited to 'conformance/conformance_python.py')
-rwxr-xr-xconformance/conformance_python.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/conformance/conformance_python.py b/conformance/conformance_python.py
index af3dc8ec..32aa2255 100755
--- a/conformance/conformance_python.py
+++ b/conformance/conformance_python.py
@@ -39,6 +39,7 @@ import struct
import sys
import os
from google.protobuf import message
+from google.protobuf import json_format
import conformance_pb2
sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0)
@@ -61,8 +62,11 @@ def do_test(request):
return response
elif request.WhichOneof('payload') == 'json_payload':
- response.skipped = "JSON not supported yet."
- return response
+ try:
+ json_format.Parse(request.json_payload, test_message)
+ except json_format.ParseError as e:
+ response.parse_error = str(e)
+ return response
else:
raise "Request didn't have payload."
@@ -74,7 +78,8 @@ def do_test(request):
response.protobuf_payload = test_message.SerializeToString()
elif request.requested_output_format == conformance_pb2.JSON:
- response.skipped = "JSON not supported yet."
+ response.json_payload = json_format.MessageToJson(test_message)
+
except Exception as e:
response.runtime_error = str(e)