소스 검색

Report serialization errors in conformance tests

Jon Skeet 9 년 전
부모
커밋
c74676f070
1개의 변경된 파일15개의 추가작업 그리고 8개의 파일을 삭제
  1. 15 8
      csharp/src/Google.Protobuf.Conformance/Program.cs

+ 15 - 8
csharp/src/Google.Protobuf.Conformance/Program.cs

@@ -105,15 +105,22 @@ namespace Google.Protobuf.Conformance
             {
                 return new ConformanceResponse { ParseError = e.Message };
             }
-            switch (request.RequestedOutputFormat)
+            try
+            {
+                switch (request.RequestedOutputFormat)
+                {
+                    case global::Conformance.WireFormat.JSON:
+                        var formatter = new JsonFormatter(new JsonFormatter.Settings(false, typeRegistry));
+                        return new ConformanceResponse { JsonPayload = formatter.Format(message) };
+                    case global::Conformance.WireFormat.PROTOBUF:
+                        return new ConformanceResponse { ProtobufPayload = message.ToByteString() };
+                    default:
+                        throw new Exception("Unsupported request output format: " + request.PayloadCase);
+                }
+            }
+            catch (InvalidOperationException e)
             {
-                case global::Conformance.WireFormat.JSON:
-                    var formatter = new JsonFormatter(new JsonFormatter.Settings(false, typeRegistry));
-                    return new ConformanceResponse { JsonPayload = formatter.Format(message) };
-                case global::Conformance.WireFormat.PROTOBUF:
-                    return new ConformanceResponse { ProtobufPayload = message.ToByteString() };
-                default:
-                    throw new Exception("Unsupported request output format: " + request.PayloadCase);
+                return new ConformanceResponse { SerializeError = e.Message };
             }
         }