aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBo Yang <teboring@google.com>2016-09-19 17:29:57 -0700
committerBo Yang <teboring@google.com>2016-09-19 20:40:58 -0700
commita2c65011c337b9ce2b6516966545cd471e4426c3 (patch)
treeea039e52d6ccc4ac87a5760386f6594f698a0fcc
parent0dca5a5bf96ba13620b2e374c22c1d06346b39f2 (diff)
downloadprotobuf-a2c65011c337b9ce2b6516966545cd471e4426c3.tar.gz
protobuf-a2c65011c337b9ce2b6516966545cd471e4426c3.tar.bz2
protobuf-a2c65011c337b9ce2b6516966545cd471e4426c3.zip
Fix bugs for internal integration.
-rw-r--r--conformance/conformance_test.cc82
-rw-r--r--conformance/conformance_test.h1
-rw-r--r--conformance/failure_list_cpp.txt6
-rw-r--r--src/Makefile.am1
4 files changed, 49 insertions, 41 deletions
diff --git a/conformance/conformance_test.cc b/conformance/conformance_test.cc
index a74f2837..b74122c6 100644
--- a/conformance/conformance_test.cc
+++ b/conformance/conformance_test.cc
@@ -286,14 +286,14 @@ void ConformanceTestSuite::RunValidInputTest(
switch (response.result_case()) {
case ConformanceResponse::RESULT_NOT_SET:
- ReportFailure(test_name, request, response,
+ ReportFailure(test_name, level, request, response,
"Response didn't have any field in the Response.");
return;
case ConformanceResponse::kParseError:
case ConformanceResponse::kRuntimeError:
case ConformanceResponse::kSerializeError:
- ReportFailure(test_name, request, response,
+ ReportFailure(test_name, level, request, response,
"Failed to parse input or produce output.");
return;
@@ -423,12 +423,12 @@ void ConformanceTestSuite::RunValidJsonTestWithProtobufInput(
}
void ConformanceTestSuite::RunValidProtobufTest(
- const string& test_name, const TestAllTypes& input,
+ const string& test_name, ConformanceLevel level, const TestAllTypes& input,
const string& equivalent_text_format) {
- RunValidInputTest("ProtobufInput." + test_name + ".ProtobufOutput",
+ RunValidInputTest("ProtobufInput." + test_name + ".ProtobufOutput", level,
input.SerializeAsString(), conformance::PROTOBUF,
equivalent_text_format, conformance::PROTOBUF);
- RunValidInputTest("ProtobufInput." + test_name + ".JsonOutput",
+ RunValidInputTest("ProtobufInput." + test_name + ".JsonOutput", level,
input.SerializeAsString(), conformance::PROTOBUF,
equivalent_text_format, conformance::JSON);
}
@@ -723,7 +723,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
FIELD_name12: 12
)");
RunValidJsonTest(
- "FieldNameWithDoubleUnderscores",
+ "FieldNameWithDoubleUnderscores", RECOMMENDED,
R"({
"fieldName13": 13,
"fieldName14": 14,
@@ -790,7 +790,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
"fieldname1: 1");
// String ends with escape character.
ExpectParseFailureForJson(
- "StringEndsWithEscapeChar",
+ "StringEndsWithEscapeChar", RECOMMENDED,
"{\"optionalString\": \"abc\\");
// Field names must be quoted (or it's not valid JSON).
ExpectParseFailureForJson(
@@ -801,13 +801,13 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
"TrailingCommaInAnObject", RECOMMENDED,
R"({"fieldname1":1,})");
ExpectParseFailureForJson(
- "TrailingCommaInAnObjectWithSpace",
+ "TrailingCommaInAnObjectWithSpace", RECOMMENDED,
R"({"fieldname1":1 ,})");
ExpectParseFailureForJson(
- "TrailingCommaInAnObjectWithSpaceCommaSpace",
+ "TrailingCommaInAnObjectWithSpaceCommaSpace", RECOMMENDED,
R"({"fieldname1":1 , })");
ExpectParseFailureForJson(
- "TrailingCommaInAnObjectWithNewlines",
+ "TrailingCommaInAnObjectWithNewlines", RECOMMENDED,
R"({
"fieldname1":1,
})");
@@ -820,28 +820,28 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
})");
// JSON spec says whitespace doesn't matter, so try a few spacings to be sure.
RunValidJsonTest(
- "OneLineNoSpaces",
+ "OneLineNoSpaces", RECOMMENDED,
"{\"optionalInt32\":1,\"optionalInt64\":2}",
R"(
optional_int32: 1
optional_int64: 2
)");
RunValidJsonTest(
- "OneLineWithSpaces",
+ "OneLineWithSpaces", RECOMMENDED,
"{ \"optionalInt32\" : 1 , \"optionalInt64\" : 2 }",
R"(
optional_int32: 1
optional_int64: 2
)");
RunValidJsonTest(
- "MultilineNoSpaces",
+ "MultilineNoSpaces", RECOMMENDED,
"{\n\"optionalInt32\"\n:\n1\n,\n\"optionalInt64\"\n:\n2\n}",
R"(
optional_int32: 1
optional_int64: 2
)");
RunValidJsonTest(
- "MultilineWithSpaces",
+ "MultilineWithSpaces", RECOMMENDED,
"{\n \"optionalInt32\" : 1\n ,\n \"optionalInt64\" : 2\n}\n",
R"(
optional_int32: 1
@@ -849,10 +849,10 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
)");
// Missing comma between key/value pairs.
ExpectParseFailureForJson(
- "MissingCommaOneLine",
+ "MissingCommaOneLine", RECOMMENDED,
"{ \"optionalInt32\": 1 \"optionalInt64\": 2 }");
ExpectParseFailureForJson(
- "MissingCommaMultiline",
+ "MissingCommaMultiline", RECOMMENDED,
"{\n \"optionalInt32\": 1\n \"optionalInt64\": 2\n}");
// Duplicated field names are not allowed.
ExpectParseFailureForJson(
@@ -919,7 +919,7 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
value.isMember("FIELDName12");
});
RunValidJsonTestWithValidator(
- "FieldNameWithDoubleUnderscores",
+ "FieldNameWithDoubleUnderscores", RECOMMENDED,
R"({
"fieldName13": 13,
"fieldName14": 14,
@@ -1375,58 +1375,58 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
TestAllTypes message;
message.set_oneof_uint32(0);
RunValidProtobufTest(
- "OneofZeroUint32", message, "oneof_uint32: 0");
+ "OneofZeroUint32", RECOMMENDED, message, "oneof_uint32: 0");
message.mutable_oneof_nested_message()->set_a(0);
RunValidProtobufTest(
- "OneofZeroMessage", message, "oneof_nested_message: {}");
+ "OneofZeroMessage", RECOMMENDED, message, "oneof_nested_message: {}");
message.set_oneof_string("");
RunValidProtobufTest(
- "OneofZeroString", message, "oneof_string: \"\"");
+ "OneofZeroString", RECOMMENDED, message, "oneof_string: \"\"");
message.set_oneof_bytes("");
RunValidProtobufTest(
- "OneofZeroBytes", message, "oneof_bytes: \"\"");
+ "OneofZeroBytes", RECOMMENDED, message, "oneof_bytes: \"\"");
message.set_oneof_bool(false);
RunValidProtobufTest(
- "OneofZeroBool", message, "oneof_bool: false");
+ "OneofZeroBool", RECOMMENDED, message, "oneof_bool: false");
message.set_oneof_uint64(0);
RunValidProtobufTest(
- "OneofZeroUint64", message, "oneof_uint64: 0");
+ "OneofZeroUint64", RECOMMENDED, message, "oneof_uint64: 0");
message.set_oneof_float(0.0f);
RunValidProtobufTest(
- "OneofZeroFloat", message, "oneof_float: 0");
+ "OneofZeroFloat", RECOMMENDED, message, "oneof_float: 0");
message.set_oneof_double(0.0);
RunValidProtobufTest(
- "OneofZeroDouble", message, "oneof_double: 0");
+ "OneofZeroDouble", RECOMMENDED, message, "oneof_double: 0");
message.set_oneof_enum(TestAllTypes::FOO);
RunValidProtobufTest(
- "OneofZeroEnum", message, "oneof_enum: FOO");
+ "OneofZeroEnum", RECOMMENDED, message, "oneof_enum: FOO");
}
RunValidJsonTest(
- "OneofZeroUint32",
+ "OneofZeroUint32", RECOMMENDED,
R"({"oneofUint32": 0})", "oneof_uint32: 0");
RunValidJsonTest(
- "OneofZeroMessage",
+ "OneofZeroMessage", RECOMMENDED,
R"({"oneofNestedMessage": {}})", "oneof_nested_message: {}");
RunValidJsonTest(
- "OneofZeroString",
+ "OneofZeroString", RECOMMENDED,
R"({"oneofString": ""})", "oneof_string: \"\"");
RunValidJsonTest(
- "OneofZeroBytes",
+ "OneofZeroBytes", RECOMMENDED,
R"({"oneofBytes": ""})", "oneof_bytes: \"\"");
RunValidJsonTest(
- "OneofZeroBool",
+ "OneofZeroBool", RECOMMENDED,
R"({"oneofBool": false})", "oneof_bool: false");
RunValidJsonTest(
- "OneofZeroUint64",
+ "OneofZeroUint64", RECOMMENDED,
R"({"oneofUint64": 0})", "oneof_uint64: 0");
RunValidJsonTest(
- "OneofZeroFloat",
+ "OneofZeroFloat", RECOMMENDED,
R"({"oneofFloat": 0.0})", "oneof_float: 0");
RunValidJsonTest(
- "OneofZeroDouble",
+ "OneofZeroDouble", RECOMMENDED,
R"({"oneofDouble": 0.0})", "oneof_double: 0");
RunValidJsonTest(
- "OneofZeroEnum",
+ "OneofZeroEnum", RECOMMENDED,
R"({"oneofEnum":"FOO"})", "oneof_enum: FOO");
// Repeated fields.
@@ -1485,13 +1485,13 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
"RepeatedFieldTrailingComma", RECOMMENDED,
R"({"repeatedInt32": [1, 2, 3, 4,]})");
ExpectParseFailureForJson(
- "RepeatedFieldTrailingCommaWithSpace",
+ "RepeatedFieldTrailingCommaWithSpace", RECOMMENDED,
"{\"repeatedInt32\": [1, 2, 3, 4 ,]}");
ExpectParseFailureForJson(
- "RepeatedFieldTrailingCommaWithSpaceCommaSpace",
+ "RepeatedFieldTrailingCommaWithSpaceCommaSpace", RECOMMENDED,
"{\"repeatedInt32\": [1, 2, 3, 4 , ]}");
ExpectParseFailureForJson(
- "RepeatedFieldTrailingCommaWithNewlines",
+ "RepeatedFieldTrailingCommaWithNewlines", RECOMMENDED,
"{\"repeatedInt32\": [\n 1,\n 2,\n 3,\n 4,\n]}");
// Map fields.
@@ -1614,13 +1614,13 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
// http://www.rfc-editor.org/rfc/rfc7159.txt says strings have to use double
// quotes.
ExpectParseFailureForJson(
- "StringFieldSingleQuoteKey",
+ "StringFieldSingleQuoteKey", RECOMMENDED,
R"({'optionalString': "Hello world!"})");
ExpectParseFailureForJson(
- "StringFieldSingleQuoteValue",
+ "StringFieldSingleQuoteValue", RECOMMENDED,
R"({"optionalString": 'Hello world!'})");
ExpectParseFailureForJson(
- "StringFieldSingleQuoteBoth",
+ "StringFieldSingleQuoteBoth", RECOMMENDED,
R"({'optionalString': 'Hello world!'})");
// Wrapper types.
diff --git a/conformance/conformance_test.h b/conformance/conformance_test.h
index 2e6fc5d7..08f16b8f 100644
--- a/conformance/conformance_test.h
+++ b/conformance/conformance_test.h
@@ -170,6 +170,7 @@ class ConformanceTestSuite {
const conformance::TestAllTypes& input,
const string& equivalent_text_format);
void RunValidProtobufTest(const string& test_name,
+ ConformanceLevel level,
const conformance::TestAllTypes& input,
const string& equivalent_text_format);
diff --git a/conformance/failure_list_cpp.txt b/conformance/failure_list_cpp.txt
index fcaa08bd..508be506 100644
--- a/conformance/failure_list_cpp.txt
+++ b/conformance/failure_list_cpp.txt
@@ -17,6 +17,9 @@ Recommended.JsonInput.FieldNameDuplicate
Recommended.JsonInput.FieldNameDuplicateDifferentCasing1
Recommended.JsonInput.FieldNameDuplicateDifferentCasing2
Recommended.JsonInput.FieldNameNotQuoted
+Recommended.JsonInput.FieldNameWithDoubleUnderscores.JsonOutput
+Recommended.JsonInput.FieldNameWithDoubleUnderscores.ProtobufOutput
+Recommended.JsonInput.FieldNameWithDoubleUnderscores.Validator
Recommended.JsonInput.MapFieldValueIsNull
Recommended.JsonInput.RepeatedFieldMessageElementIsNull
Recommended.JsonInput.RepeatedFieldPrimitiveElementIsNull
@@ -33,6 +36,9 @@ Recommended.JsonInput.TrailingCommaInAnObjectWithNewlines
Recommended.JsonInput.TrailingCommaInAnObjectWithSpace
Recommended.JsonInput.TrailingCommaInAnObjectWithSpaceCommaSpace
Required.JsonInput.DoubleFieldTooSmall
+Required.JsonInput.FieldNameInLowerCamelCase.Validator
+Required.JsonInput.FieldNameInSnakeCase.JsonOutput
+Required.JsonInput.FieldNameInSnakeCase.ProtobufOutput
Required.ProtobufInput.PrematureEofBeforeKnownRepeatedValue.MESSAGE
Required.ProtobufInput.PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE
Required.ProtobufInput.PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE
diff --git a/src/Makefile.am b/src/Makefile.am
index aa0e7902..c62c2588 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -115,6 +115,7 @@ nobase_include_HEADERS = \
google/protobuf/generated_enum_util.h \
google/protobuf/generated_message_reflection.h \
google/protobuf/generated_message_util.h \
+ google/protobuf/has_bits.h \
google/protobuf/map_entry.h \
google/protobuf/map_entry_lite.h \
google/protobuf/map_field.h \