diff --git a/csharp/generate_protos.sh b/csharp/generate_protos.sh
index cd682c2a89..17b1640cb9 100755
--- a/csharp/generate_protos.sh
+++ b/csharp/generate_protos.sh
@@ -79,3 +79,8 @@ $PROTOC -Isrc -I. \
$PROTOC -Iexamples -Isrc --csharp_out=csharp/src/AddressBook \
--csharp_opt=file_extension=.pb.cs \
examples/addressbook.proto
+
+# Conformance tests
+$PROTOC -I. --csharp_out=csharp/src/Google.Protobuf.Conformance \
+ --csharp_opt=file_extension=.pb.cs \
+ conformance/conformance.proto
diff --git a/csharp/src/Google.Protobuf.Conformance/BUILD.bazel b/csharp/src/Google.Protobuf.Conformance/BUILD.bazel
index 12ad0f7953..358c44c108 100644
--- a/csharp/src/Google.Protobuf.Conformance/BUILD.bazel
+++ b/csharp/src/Google.Protobuf.Conformance/BUILD.bazel
@@ -37,7 +37,7 @@ CONFORMANCE_DEPS = [
filegroup(
name = "srcs",
srcs = [
- "Conformance.cs",
+ "Conformance.pb.cs",
"Program.cs",
"Google.Protobuf.Conformance.csproj",
],
@@ -88,7 +88,7 @@ pkg_files(
srcs = [
"BUILD.bazel",
"Google.Protobuf.Conformance.csproj",
- "Conformance.cs",
+ "Conformance.pb.cs",
"Program.cs",
],
strip_prefix = strip_prefix.from_root(""),
diff --git a/csharp/src/Google.Protobuf.Conformance/Conformance.cs b/csharp/src/Google.Protobuf.Conformance/Conformance.pb.cs
similarity index 93%
rename from csharp/src/Google.Protobuf.Conformance/Conformance.cs
rename to csharp/src/Google.Protobuf.Conformance/Conformance.pb.cs
index 77fd9c9bba..664a17b636 100644
--- a/csharp/src/Google.Protobuf.Conformance/Conformance.cs
+++ b/csharp/src/Google.Protobuf.Conformance/Conformance.pb.cs
@@ -1,6 +1,6 @@
//
// Generated by the protocol buffer compiler. DO NOT EDIT!
-// source: conformance.proto
+// source: conformance/conformance.proto
//
#pragma warning disable 1591, 0612, 3021, 8981
#region Designer generated code
@@ -11,11 +11,11 @@ using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Conformance {
- /// Holder for reflection information generated from conformance.proto
+ /// Holder for reflection information generated from conformance/conformance.proto
public static partial class ConformanceReflection {
#region Descriptor
- /// File descriptor for conformance.proto
+ /// File descriptor for conformance/conformance.proto
public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
@@ -24,34 +24,35 @@ namespace Conformance {
static ConformanceReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
- "ChFjb25mb3JtYW5jZS5wcm90bxILY29uZm9ybWFuY2UiHQoKRmFpbHVyZVNl",
- "dBIPCgdmYWlsdXJlGAEgAygJIuMCChJDb25mb3JtYW5jZVJlcXVlc3QSGgoQ",
- "cHJvdG9idWZfcGF5bG9hZBgBIAEoDEgAEhYKDGpzb25fcGF5bG9hZBgCIAEo",
- "CUgAEhYKDGpzcGJfcGF5bG9hZBgHIAEoCUgAEhYKDHRleHRfcGF5bG9hZBgI",
- "IAEoCUgAEjgKF3JlcXVlc3RlZF9vdXRwdXRfZm9ybWF0GAMgASgOMhcuY29u",
- "Zm9ybWFuY2UuV2lyZUZvcm1hdBIUCgxtZXNzYWdlX3R5cGUYBCABKAkSMAoN",
- "dGVzdF9jYXRlZ29yeRgFIAEoDjIZLmNvbmZvcm1hbmNlLlRlc3RDYXRlZ29y",
- "eRI+ChVqc3BiX2VuY29kaW5nX29wdGlvbnMYBiABKAsyHy5jb25mb3JtYW5j",
- "ZS5Kc3BiRW5jb2RpbmdDb25maWcSHAoUcHJpbnRfdW5rbm93bl9maWVsZHMY",
- "CSABKAhCCQoHcGF5bG9hZCLhAQoTQ29uZm9ybWFuY2VSZXNwb25zZRIVCgtw",
- "YXJzZV9lcnJvchgBIAEoCUgAEhkKD3NlcmlhbGl6ZV9lcnJvchgGIAEoCUgA",
- "EhcKDXJ1bnRpbWVfZXJyb3IYAiABKAlIABIaChBwcm90b2J1Zl9wYXlsb2Fk",
- "GAMgASgMSAASFgoManNvbl9wYXlsb2FkGAQgASgJSAASEQoHc2tpcHBlZBgF",
- "IAEoCUgAEhYKDGpzcGJfcGF5bG9hZBgHIAEoCUgAEhYKDHRleHRfcGF5bG9h",
- "ZBgIIAEoCUgAQggKBnJlc3VsdCI3ChJKc3BiRW5jb2RpbmdDb25maWcSIQoZ",
- "dXNlX2pzcGJfYXJyYXlfYW55X2Zvcm1hdBgBIAEoCCpQCgpXaXJlRm9ybWF0",
- "Eg8KC1VOU1BFQ0lGSUVEEAASDAoIUFJPVE9CVUYQARIICgRKU09OEAISCAoE",
- "SlNQQhADEg8KC1RFWFRfRk9STUFUEAQqjwEKDFRlc3RDYXRlZ29yeRIUChBV",
- "TlNQRUNJRklFRF9URVNUEAASDwoLQklOQVJZX1RFU1QQARINCglKU09OX1RF",
- "U1QQAhIkCiBKU09OX0lHTk9SRV9VTktOT1dOX1BBUlNJTkdfVEVTVBADEg0K",
- "CUpTUEJfVEVTVBAEEhQKEFRFWFRfRk9STUFUX1RFU1QQBUIhCh9jb20uZ29v",
- "Z2xlLnByb3RvYnVmLmNvbmZvcm1hbmNlYgZwcm90bzM="));
+ "Ch1jb25mb3JtYW5jZS9jb25mb3JtYW5jZS5wcm90bxILY29uZm9ybWFuY2Ui",
+ "HQoKRmFpbHVyZVNldBIPCgdmYWlsdXJlGAEgAygJIuMCChJDb25mb3JtYW5j",
+ "ZVJlcXVlc3QSGgoQcHJvdG9idWZfcGF5bG9hZBgBIAEoDEgAEhYKDGpzb25f",
+ "cGF5bG9hZBgCIAEoCUgAEhYKDGpzcGJfcGF5bG9hZBgHIAEoCUgAEhYKDHRl",
+ "eHRfcGF5bG9hZBgIIAEoCUgAEjgKF3JlcXVlc3RlZF9vdXRwdXRfZm9ybWF0",
+ "GAMgASgOMhcuY29uZm9ybWFuY2UuV2lyZUZvcm1hdBIUCgxtZXNzYWdlX3R5",
+ "cGUYBCABKAkSMAoNdGVzdF9jYXRlZ29yeRgFIAEoDjIZLmNvbmZvcm1hbmNl",
+ "LlRlc3RDYXRlZ29yeRI+ChVqc3BiX2VuY29kaW5nX29wdGlvbnMYBiABKAsy",
+ "Hy5jb25mb3JtYW5jZS5Kc3BiRW5jb2RpbmdDb25maWcSHAoUcHJpbnRfdW5r",
+ "bm93bl9maWVsZHMYCSABKAhCCQoHcGF5bG9hZCL6AQoTQ29uZm9ybWFuY2VS",
+ "ZXNwb25zZRIVCgtwYXJzZV9lcnJvchgBIAEoCUgAEhkKD3NlcmlhbGl6ZV9l",
+ "cnJvchgGIAEoCUgAEhcKDXRpbWVvdXRfZXJyb3IYCSABKAlIABIXCg1ydW50",
+ "aW1lX2Vycm9yGAIgASgJSAASGgoQcHJvdG9idWZfcGF5bG9hZBgDIAEoDEgA",
+ "EhYKDGpzb25fcGF5bG9hZBgEIAEoCUgAEhEKB3NraXBwZWQYBSABKAlIABIW",
+ "Cgxqc3BiX3BheWxvYWQYByABKAlIABIWCgx0ZXh0X3BheWxvYWQYCCABKAlI",
+ "AEIICgZyZXN1bHQiNwoSSnNwYkVuY29kaW5nQ29uZmlnEiEKGXVzZV9qc3Bi",
+ "X2FycmF5X2FueV9mb3JtYXQYASABKAgqUAoKV2lyZUZvcm1hdBIPCgtVTlNQ",
+ "RUNJRklFRBAAEgwKCFBST1RPQlVGEAESCAoESlNPThACEggKBEpTUEIQAxIP",
+ "CgtURVhUX0ZPUk1BVBAEKo8BCgxUZXN0Q2F0ZWdvcnkSFAoQVU5TUEVDSUZJ",
+ "RURfVEVTVBAAEg8KC0JJTkFSWV9URVNUEAESDQoJSlNPTl9URVNUEAISJAog",
+ "SlNPTl9JR05PUkVfVU5LTk9XTl9QQVJTSU5HX1RFU1QQAxINCglKU1BCX1RF",
+ "U1QQBBIUChBURVhUX0ZPUk1BVF9URVNUEAVCLwofY29tLmdvb2dsZS5wcm90",
+ "b2J1Zi5jb25mb3JtYW5jZaICC0NvbmZvcm1hbmNlYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Conformance.WireFormat), typeof(global::Conformance.TestCategory), }, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.FailureSet), global::Conformance.FailureSet.Parser, new[]{ "Failure" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.ConformanceRequest), global::Conformance.ConformanceRequest.Parser, new[]{ "ProtobufPayload", "JsonPayload", "JspbPayload", "TextPayload", "RequestedOutputFormat", "MessageType", "TestCategory", "JspbEncodingOptions", "PrintUnknownFields" }, new[]{ "Payload" }, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.ConformanceResponse), global::Conformance.ConformanceResponse.Parser, new[]{ "ParseError", "SerializeError", "RuntimeError", "ProtobufPayload", "JsonPayload", "Skipped", "JspbPayload", "TextPayload" }, new[]{ "Result" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.ConformanceResponse), global::Conformance.ConformanceResponse.Parser, new[]{ "ParseError", "SerializeError", "TimeoutError", "RuntimeError", "ProtobufPayload", "JsonPayload", "Skipped", "JspbPayload", "TextPayload" }, new[]{ "Result" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.JspbEncodingConfig), global::Conformance.JspbEncodingConfig.Parser, new[]{ "UseJspbArrayAnyFormat" }, null, null, null, null)
}));
}
@@ -89,7 +90,8 @@ namespace Conformance {
///
[pbr::OriginalName("JSON_IGNORE_UNKNOWN_PARSING_TEST")] JsonIgnoreUnknownParsingTest = 3,
///
- /// Test jspb wire format. Only used inside Google. Opensource testees just skip it.
+ /// Test jspb wire format. Only used inside Google. Opensource testees just
+ /// skip it.
///
[pbr::OriginalName("JSPB_TEST")] JspbTest = 4,
///
@@ -382,7 +384,7 @@ namespace Conformance {
/// Field number for the "jspb_payload" field.
public const int JspbPayloadFieldNumber = 7;
///
- /// Only used inside google. Opensource testees just skip it.
+ /// Only used inside Google. Opensource testees just skip it.
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@@ -443,8 +445,8 @@ namespace Conformance {
private global::Conformance.TestCategory testCategory_ = global::Conformance.TestCategory.UnspecifiedTest;
///
/// Each test is given a specific test category. Some category may need
- /// specific support in testee programs. Refer to the definition of TestCategory
- /// for more information.
+ /// specific support in testee programs. Refer to the definition of
+ /// TestCategory for more information.
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@@ -892,6 +894,9 @@ namespace Conformance {
case ResultOneofCase.SerializeError:
SerializeError = other.SerializeError;
break;
+ case ResultOneofCase.TimeoutError:
+ TimeoutError = other.TimeoutError;
+ break;
case ResultOneofCase.RuntimeError:
RuntimeError = other.RuntimeError;
break;
@@ -957,6 +962,23 @@ namespace Conformance {
}
}
+ /// Field number for the "timeout_error" field.
+ public const int TimeoutErrorFieldNumber = 9;
+ ///
+ /// This should be set if the test program timed out. The string should
+ /// provide more information about what the child process was doing when it
+ /// was killed.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string TimeoutError {
+ get { return resultCase_ == ResultOneofCase.TimeoutError ? (string) result_ : ""; }
+ set {
+ result_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ resultCase_ = ResultOneofCase.TimeoutError;
+ }
+ }
+
/// Field number for the "runtime_error" field.
public const int RuntimeErrorFieldNumber = 2;
///
@@ -1061,6 +1083,7 @@ namespace Conformance {
None = 0,
ParseError = 1,
SerializeError = 6,
+ TimeoutError = 9,
RuntimeError = 2,
ProtobufPayload = 3,
JsonPayload = 4,
@@ -1099,6 +1122,7 @@ namespace Conformance {
}
if (ParseError != other.ParseError) return false;
if (SerializeError != other.SerializeError) return false;
+ if (TimeoutError != other.TimeoutError) return false;
if (RuntimeError != other.RuntimeError) return false;
if (ProtobufPayload != other.ProtobufPayload) return false;
if (JsonPayload != other.JsonPayload) return false;
@@ -1115,6 +1139,7 @@ namespace Conformance {
int hash = 1;
if (resultCase_ == ResultOneofCase.ParseError) hash ^= ParseError.GetHashCode();
if (resultCase_ == ResultOneofCase.SerializeError) hash ^= SerializeError.GetHashCode();
+ if (resultCase_ == ResultOneofCase.TimeoutError) hash ^= TimeoutError.GetHashCode();
if (resultCase_ == ResultOneofCase.RuntimeError) hash ^= RuntimeError.GetHashCode();
if (resultCase_ == ResultOneofCase.ProtobufPayload) hash ^= ProtobufPayload.GetHashCode();
if (resultCase_ == ResultOneofCase.JsonPayload) hash ^= JsonPayload.GetHashCode();
@@ -1172,6 +1197,10 @@ namespace Conformance {
output.WriteRawTag(66);
output.WriteString(TextPayload);
}
+ if (resultCase_ == ResultOneofCase.TimeoutError) {
+ output.WriteRawTag(74);
+ output.WriteString(TimeoutError);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -1214,6 +1243,10 @@ namespace Conformance {
output.WriteRawTag(66);
output.WriteString(TextPayload);
}
+ if (resultCase_ == ResultOneofCase.TimeoutError) {
+ output.WriteRawTag(74);
+ output.WriteString(TimeoutError);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@@ -1230,6 +1263,9 @@ namespace Conformance {
if (resultCase_ == ResultOneofCase.SerializeError) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(SerializeError);
}
+ if (resultCase_ == ResultOneofCase.TimeoutError) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(TimeoutError);
+ }
if (resultCase_ == ResultOneofCase.RuntimeError) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(RuntimeError);
}
@@ -1267,6 +1303,9 @@ namespace Conformance {
case ResultOneofCase.SerializeError:
SerializeError = other.SerializeError;
break;
+ case ResultOneofCase.TimeoutError:
+ TimeoutError = other.TimeoutError;
+ break;
case ResultOneofCase.RuntimeError:
RuntimeError = other.RuntimeError;
break;
@@ -1334,6 +1373,10 @@ namespace Conformance {
TextPayload = input.ReadString();
break;
}
+ case 74: {
+ TimeoutError = input.ReadString();
+ break;
+ }
}
}
#endif
@@ -1381,6 +1424,10 @@ namespace Conformance {
TextPayload = input.ReadString();
break;
}
+ case 74: {
+ TimeoutError = input.ReadString();
+ break;
+ }
}
}
}