[ObjC] Test file cleanups - Remove some types not needed. - Remove some files not needed. - Move some tests files into different prefixes to logically segment things. - Add objc_class_prefix to the files. - Use an expected prefix file during generation to exercise that code and validate things. - Require prefixes for the test file.
diff --git a/objectivec/DevTools/compile_testing_protos.sh b/objectivec/DevTools/compile_testing_protos.sh index 7bdfbb8..fb8a853 100755 --- a/objectivec/DevTools/compile_testing_protos.sh +++ b/objectivec/DevTools/compile_testing_protos.sh
@@ -42,10 +42,8 @@ objectivec/Tests/unittest_extension_chain_e.proto objectivec/Tests/unittest_extension_chain_f.proto objectivec/Tests/unittest_extension_chain_g.proto - objectivec/Tests/unittest_import_public_lite.proto objectivec/Tests/unittest_import_public.proto objectivec/Tests/unittest_import.proto - objectivec/Tests/unittest_mset_wire_format.proto objectivec/Tests/unittest_mset.proto objectivec/Tests/unittest_objc_options.proto objectivec/Tests/unittest_objc_startup.proto @@ -128,8 +126,11 @@ # ----------------------------------------------------------------------------- # Generate the Objective C specific testing protos. -"${PROTOC}" \ - --objc_out="${OUTPUT_DIR}" \ - --proto_path=. \ - --proto_path=src \ +"${PROTOC}" \ + --objc_out="${OUTPUT_DIR}" \ + --objc_opt=expected_prefixes_path=objectivec/Tests/expected_prefixes.txt \ + --objc_opt=prefixes_must_be_registered=yes \ + --objc_opt=require_prefixes=yes \ + --proto_path=. \ + --proto_path=src \ "${OBJC_TEST_PROTO_FILES[@]}"
diff --git a/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj b/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj index 96947b0..bb52e45 100644 --- a/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj +++ b/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj
@@ -218,9 +218,7 @@ F44FEABE28B5465900EC57B3 /* unittest_deprecated_file.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_deprecated_file.proto; sourceTree = "<group>"; }; F44FEABF28B5465900EC57B3 /* unittest_mset.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_mset.proto; sourceTree = "<group>"; }; F44FEAC028B5465900EC57B3 /* unittest_import.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_import.proto; sourceTree = "<group>"; }; - F44FEAC128B5465900EC57B3 /* unittest_mset_wire_format.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_mset_wire_format.proto; sourceTree = "<group>"; }; F44FEAC228B5465900EC57B3 /* unittest.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest.proto; sourceTree = "<group>"; }; - F44FEAC328B5465900EC57B3 /* unittest_import_public_lite.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_import_public_lite.proto; sourceTree = "<group>"; }; F44FEAC428B5465900EC57B3 /* unittest_preserve_unknown_enum.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_preserve_unknown_enum.proto; sourceTree = "<group>"; }; F44FEAC528B5465900EC57B3 /* any_test.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = any_test.proto; sourceTree = "<group>"; }; F44FEAC628B5465900EC57B3 /* unittest_import_public.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_import_public.proto; sourceTree = "<group>"; }; @@ -519,10 +517,8 @@ F44FEAC928B5465900EC57B3 /* unittest_extension_chain_e.proto */, F44FEAD028B5465A00EC57B3 /* unittest_extension_chain_f.proto */, F44FEAC828B5465900EC57B3 /* unittest_extension_chain_g.proto */, - F44FEAC328B5465900EC57B3 /* unittest_import_public_lite.proto */, F44FEAC628B5465900EC57B3 /* unittest_import_public.proto */, F44FEAC028B5465900EC57B3 /* unittest_import.proto */, - F44FEAC128B5465900EC57B3 /* unittest_mset_wire_format.proto */, F44FEABF28B5465900EC57B3 /* unittest_mset.proto */, 8B35468421A616F6000BD30D /* unittest_objc_options.proto */, F4CF31701B162ED800BD9B06 /* unittest_objc_startup.proto */,
diff --git a/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj b/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj index 5dccdeb..8bbe96b 100644 --- a/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj +++ b/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj
@@ -226,8 +226,6 @@ F44FEAD628B546E300EC57B3 /* unittest_deprecated.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_deprecated.proto; sourceTree = "<group>"; }; F44FEAD728B546E300EC57B3 /* any_test.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = any_test.proto; sourceTree = "<group>"; }; F44FEAD828B546E300EC57B3 /* unittest_extension_chain_b.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_extension_chain_b.proto; sourceTree = "<group>"; }; - F44FEAD928B546E300EC57B3 /* unittest_import_public_lite.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_import_public_lite.proto; sourceTree = "<group>"; }; - F44FEADA28B546E300EC57B3 /* unittest_mset_wire_format.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_mset_wire_format.proto; sourceTree = "<group>"; }; F44FEADB28B546E300EC57B3 /* unittest_import.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_import.proto; sourceTree = "<group>"; }; F44FEADC28B546E300EC57B3 /* unittest_mset.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_mset.proto; sourceTree = "<group>"; }; F44FEADD28B546E300EC57B3 /* unittest.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest.proto; sourceTree = "<group>"; }; @@ -525,10 +523,8 @@ F44FEAE328B546E300EC57B3 /* unittest_extension_chain_e.proto */, F44FEADE28B546E300EC57B3 /* unittest_extension_chain_f.proto */, F44FEAE128B546E300EC57B3 /* unittest_extension_chain_g.proto */, - F44FEAD928B546E300EC57B3 /* unittest_import_public_lite.proto */, F44FEAE028B546E300EC57B3 /* unittest_import_public.proto */, F44FEADB28B546E300EC57B3 /* unittest_import.proto */, - F44FEADA28B546E300EC57B3 /* unittest_mset_wire_format.proto */, F44FEADC28B546E300EC57B3 /* unittest_mset.proto */, 8B35468621A61EB2000BD30D /* unittest_objc_options.proto */, F4CF31711B162EF500BD9B06 /* unittest_objc_startup.proto */,
diff --git a/objectivec/ProtocolBuffers_tvOS.xcodeproj/project.pbxproj b/objectivec/ProtocolBuffers_tvOS.xcodeproj/project.pbxproj index c2925a9..6faf5eb 100644 --- a/objectivec/ProtocolBuffers_tvOS.xcodeproj/project.pbxproj +++ b/objectivec/ProtocolBuffers_tvOS.xcodeproj/project.pbxproj
@@ -218,9 +218,7 @@ F4487C801AAF62FC00531423 /* GPBMessageTests+Serialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GPBMessageTests+Serialization.m"; sourceTree = "<group>"; }; F4487C841AAF6AC500531423 /* GPBMessageTests+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GPBMessageTests+Merge.m"; sourceTree = "<group>"; }; F44929021C866B3B00C2548A /* GPBCodedOutputStream_PackagePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPBCodedOutputStream_PackagePrivate.h; sourceTree = "<group>"; }; - F44FEAE428B5471300EC57B3 /* unittest_import_public_lite.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_import_public_lite.proto; sourceTree = "<group>"; }; F44FEAE528B5471300EC57B3 /* unittest_extension_chain_a.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_extension_chain_a.proto; sourceTree = "<group>"; }; - F44FEAE628B5471300EC57B3 /* unittest_mset_wire_format.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_mset_wire_format.proto; sourceTree = "<group>"; }; F44FEAE728B5471300EC57B3 /* unittest_extension_chain_c.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_extension_chain_c.proto; sourceTree = "<group>"; }; F44FEAE828B5471300EC57B3 /* unittest_extension_chain_g.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_extension_chain_g.proto; sourceTree = "<group>"; }; F44FEAE928B5471300EC57B3 /* unittest_import.proto */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.protobuf; path = unittest_import.proto; sourceTree = "<group>"; }; @@ -525,10 +523,8 @@ F44FEAF428B5471300EC57B3 /* unittest_extension_chain_e.proto */, F44FEAEC28B5471300EC57B3 /* unittest_extension_chain_f.proto */, F44FEAE828B5471300EC57B3 /* unittest_extension_chain_g.proto */, - F44FEAE428B5471300EC57B3 /* unittest_import_public_lite.proto */, F44FEAEB28B5471300EC57B3 /* unittest_import_public.proto */, F44FEAE928B5471300EC57B3 /* unittest_import.proto */, - F44FEAE628B5471300EC57B3 /* unittest_mset_wire_format.proto */, F44FEAF128B5471300EC57B3 /* unittest_mset.proto */, 8B35468621A61EB2000BD30D /* unittest_objc_options.proto */, F4CF31711B162EF500BD9B06 /* unittest_objc_startup.proto */,
diff --git a/objectivec/Tests/GPBARCUnittestProtos.m b/objectivec/Tests/GPBARCUnittestProtos.m index 08b8426..fa23692 100644 --- a/objectivec/Tests/GPBARCUnittestProtos.m +++ b/objectivec/Tests/GPBARCUnittestProtos.m
@@ -40,7 +40,6 @@ #import "objectivec/Tests/UnittestDeprecatedFile.pbobjc.h" #import "objectivec/Tests/UnittestImport.pbobjc.h" #import "objectivec/Tests/UnittestImportPublic.pbobjc.h" -#import "objectivec/Tests/UnittestImportPublicLite.pbobjc.h" #import "objectivec/Tests/UnittestMset.pbobjc.h" #import "objectivec/Tests/UnittestObjc.pbobjc.h" #import "objectivec/Tests/UnittestObjcOptions.pbobjc.h"
diff --git a/objectivec/Tests/GPBUnittestProtos.m b/objectivec/Tests/GPBUnittestProtos.m index bebe4ee..6208e12 100644 --- a/objectivec/Tests/GPBUnittestProtos.m +++ b/objectivec/Tests/GPBUnittestProtos.m
@@ -40,9 +40,7 @@ #import "objectivec/Tests/UnittestDeprecatedFile.pbobjc.m" #import "objectivec/Tests/UnittestImport.pbobjc.m" #import "objectivec/Tests/UnittestImportPublic.pbobjc.m" -#import "objectivec/Tests/UnittestImportPublicLite.pbobjc.m" #import "objectivec/Tests/UnittestMset.pbobjc.m" -#import "objectivec/Tests/UnittestMsetWireFormat.pbobjc.m" #import "objectivec/Tests/UnittestObjc.pbobjc.m" #import "objectivec/Tests/UnittestObjcOptions.pbobjc.m" #import "objectivec/Tests/UnittestObjcStartup.pbobjc.m"
diff --git a/objectivec/Tests/GPBWellKnownTypesTest.m b/objectivec/Tests/GPBWellKnownTypesTest.m index bd25d55..b7f28a6 100644 --- a/objectivec/Tests/GPBWellKnownTypesTest.m +++ b/objectivec/Tests/GPBWellKnownTypesTest.m
@@ -161,9 +161,9 @@ // Set and extract covers most of the code. - TestAny *subMessage = [TestAny message]; + AnyTestMessage *subMessage = [AnyTestMessage message]; subMessage.int32Value = 12345; - TestAny *message = [TestAny message]; + AnyTestMessage *message = [AnyTestMessage message]; NSError *err = nil; message.anyValue = [GPBAny anyWithMessage:subMessage error:&err]; XCTAssertNil(err); @@ -171,14 +171,14 @@ NSData *data = message.data; XCTAssertNotNil(data); - TestAny *message2 = [TestAny parseFromData:data error:&err]; + AnyTestMessage *message2 = [AnyTestMessage parseFromData:data error:&err]; XCTAssertNil(err); XCTAssertNotNil(message2); XCTAssertTrue(message2.hasAnyValue); - TestAny *subMessage2 = - (TestAny *)[message.anyValue unpackMessageClass:[TestAny class] - error:&err]; + AnyTestMessage *subMessage2 = + (AnyTestMessage *)[message.anyValue unpackMessageClass:[AnyTestMessage class] + error:&err]; XCTAssertNil(err); XCTAssertNotNil(subMessage2); XCTAssertEqual(subMessage2.int32Value, 12345); @@ -189,9 +189,9 @@ NSData *data2 = message.data; XCTAssertEqualObjects(data2, data); - TestAny *subMessage3 = - (TestAny *)[message.anyValue unpackMessageClass:[TestAny class] - error:NULL]; + AnyTestMessage *subMessage3 = + (AnyTestMessage *)[message.anyValue unpackMessageClass:[AnyTestMessage class] + error:NULL]; XCTAssertNotNil(subMessage3); XCTAssertEqualObjects(subMessage2, subMessage3);
diff --git a/objectivec/Tests/GPBWireFormatTests.m b/objectivec/Tests/GPBWireFormatTests.m index 24d68f9..e100667 100644 --- a/objectivec/Tests/GPBWireFormatTests.m +++ b/objectivec/Tests/GPBWireFormatTests.m
@@ -35,7 +35,6 @@ #import "GPBUnknownField_PackagePrivate.h" #import "objectivec/Tests/Unittest.pbobjc.h" #import "objectivec/Tests/UnittestMset.pbobjc.h" -#import "objectivec/Tests/UnittestMsetWireFormat.pbobjc.h" @interface WireFormatTests : GPBTestCase @end @@ -144,11 +143,11 @@ const int kUnknownTypeId = 1550055; - (void)testSerializeMessageSet { - // Set up a TestMessageSet with two known messages and an unknown one. - TestMessageSet* message_set = [TestMessageSet message]; - [[message_set getExtension:[TestMessageSetExtension1 messageSetExtension]] + // Set up a MSetMessage with two known messages and an unknown one. + MSetMessage* message_set = [MSetMessage message]; + [[message_set getExtension:[MSetMessageExtension1 messageSetExtension]] setI:123]; - [[message_set getExtension:[TestMessageSetExtension2 messageSetExtension]] + [[message_set getExtension:[MSetMessageExtension2 messageSetExtension]] setStr:@"foo"]; GPBUnknownField* unknownField = [[[GPBUnknownField alloc] initWithNumber:kUnknownTypeId] autorelease]; @@ -160,26 +159,26 @@ NSData* data = [message_set data]; - // Parse back using RawMessageSet and check the contents. - RawMessageSet* raw = [RawMessageSet parseFromData:data error:NULL]; + // Parse back using MSetRawMessageSet and check the contents. + MSetRawMessageSet* raw = [MSetRawMessageSet parseFromData:data error:NULL]; XCTAssertEqual([raw.unknownFields countOfFields], (NSUInteger)0); XCTAssertEqual(raw.itemArray.count, (NSUInteger)3); XCTAssertEqual((uint32_t)[raw.itemArray[0] typeId], - [TestMessageSetExtension1 messageSetExtension].fieldNumber); + [MSetMessageExtension1 messageSetExtension].fieldNumber); XCTAssertEqual((uint32_t)[raw.itemArray[1] typeId], - [TestMessageSetExtension2 messageSetExtension].fieldNumber); + [MSetMessageExtension2 messageSetExtension].fieldNumber); XCTAssertEqual([raw.itemArray[2] typeId], kUnknownTypeId); - TestMessageSetExtension1* message1 = - [TestMessageSetExtension1 parseFromData:[((RawMessageSet_Item*)raw.itemArray[0]) message] - error:NULL]; + MSetMessageExtension1* message1 = + [MSetMessageExtension1 parseFromData:[((MSetRawMessageSet_Item*)raw.itemArray[0]) message] + error:NULL]; XCTAssertEqual(message1.i, 123); - TestMessageSetExtension2* message2 = - [TestMessageSetExtension2 parseFromData:[((RawMessageSet_Item*)raw.itemArray[1]) message] - error:NULL]; + MSetMessageExtension2* message2 = + [MSetMessageExtension2 parseFromData:[((MSetRawMessageSet_Item*)raw.itemArray[1]) message] + error:NULL]; XCTAssertEqualObjects(message2.str, @"foo"); XCTAssertEqualObjects([raw.itemArray[2] message], @@ -187,29 +186,29 @@ } - (void)testParseMessageSet { - // Set up a RawMessageSet with two known messages and an unknown one. - RawMessageSet* raw = [RawMessageSet message]; + // Set up a MSetRawMessageSet with two known messages and an unknown one. + MSetRawMessageSet* raw = [MSetRawMessageSet message]; { - RawMessageSet_Item* item = [RawMessageSet_Item message]; - item.typeId = [TestMessageSetExtension1 messageSetExtension].fieldNumber; - TestMessageSetExtension1* message = [TestMessageSetExtension1 message]; + MSetRawMessageSet_Item* item = [MSetRawMessageSet_Item message]; + item.typeId = [MSetMessageExtension1 messageSetExtension].fieldNumber; + MSetMessageExtension1* message = [MSetMessageExtension1 message]; message.i = 123; item.message = [message data]; [raw.itemArray addObject:item]; } { - RawMessageSet_Item* item = [RawMessageSet_Item message]; - item.typeId = [TestMessageSetExtension2 messageSetExtension].fieldNumber; - TestMessageSetExtension2* message = [TestMessageSetExtension2 message]; + MSetRawMessageSet_Item* item = [MSetRawMessageSet_Item message]; + item.typeId = [MSetMessageExtension2 messageSetExtension].fieldNumber; + MSetMessageExtension2* message = [MSetMessageExtension2 message]; message.str = @"foo"; item.message = [message data]; [raw.itemArray addObject:item]; } { - RawMessageSet_Item* item = [RawMessageSet_Item message]; + MSetRawMessageSet_Item* item = [MSetRawMessageSet_Item message]; item.typeId = kUnknownTypeId; item.message = [NSData dataWithBytes:"bar" length:3]; [raw.itemArray addObject:item]; @@ -217,19 +216,19 @@ NSData* data = [raw data]; - // Parse as a TestMessageSet and check the contents. - TestMessageSet* messageSet = - [TestMessageSet parseFromData:data - extensionRegistry:[UnittestMsetRoot extensionRegistry] + // Parse as a MSetMessage and check the contents. + MSetMessage* messageSet = + [MSetMessage parseFromData:data + extensionRegistry:[MSetUnittestMsetRoot extensionRegistry] error:NULL]; XCTAssertEqual( [[messageSet - getExtension:[TestMessageSetExtension1 messageSetExtension]] i], + getExtension:[MSetMessageExtension1 messageSetExtension]] i], 123); XCTAssertEqualObjects( [[messageSet - getExtension:[TestMessageSetExtension2 messageSetExtension]] str], + getExtension:[MSetMessageExtension2 messageSetExtension]] str], @"foo"); XCTAssertEqual([messageSet.unknownFields countOfFields], (NSUInteger)1);
diff --git a/objectivec/Tests/any_test.proto b/objectivec/Tests/any_test.proto index 032c620..f2461bf 100644 --- a/objectivec/Tests/any_test.proto +++ b/objectivec/Tests/any_test.proto
@@ -30,11 +30,13 @@ syntax = "proto3"; -package objc.protobuf.tests; +package objc.protobuf.tests.any; import "google/protobuf/any.proto"; -message TestAny { +option objc_class_prefix = "Any"; + +message TestMessage { int32 int32_value = 1; google.protobuf.Any any_value = 2; repeated google.protobuf.Any repeated_any_value = 3;
diff --git a/objectivec/Tests/expected_prefixes.txt b/objectivec/Tests/expected_prefixes.txt new file mode 100644 index 0000000..1665ab1 --- /dev/null +++ b/objectivec/Tests/expected_prefixes.txt
@@ -0,0 +1,12 @@ +objc.protobuf.tests = "" # Explicit empty prefix +objc.protobuf.tests.any = Any +objc.protobuf.tests.chain = Chain +objc.protobuf.tests.cycle = Cycle +objc.protobuf.tests.deprecated = Dep +objc.protobuf.tests.deprecated_file = FileDep +objc.protobuf.tests.import = Import +objc.protobuf.tests.mset = MSet +objc.protobuf.tests.options = GPBTEST +objc.protobuf.tests.proto3_preserve_unknown_enum = UnknownEnums +objc.protobuf.tests.public_import = PublicImport +objc.protobuf.tests.startup = TestObjCStartup
diff --git a/objectivec/Tests/map_proto2_unittest.proto b/objectivec/Tests/map_proto2_unittest.proto index 30e4ae1..d7b494c 100644 --- a/objectivec/Tests/map_proto2_unittest.proto +++ b/objectivec/Tests/map_proto2_unittest.proto
@@ -32,11 +32,11 @@ import "objectivec/Tests/unittest_import.proto"; -// We don't put this in a package within proto2 because we need to make sure -// that the generated code doesn't depend on being in the proto2 namespace. -// In map_test_util.h we do "using namespace unittest = objc.protobuf.tests". package objc.protobuf.tests; +// Explicit empty prefix, tests some validations code paths also. +option objc_class_prefix = ""; + enum Proto2MapEnum { PROTO2_MAP_ENUM_FOO = 0; PROTO2_MAP_ENUM_BAR = 1; @@ -61,7 +61,7 @@ } message TestImportEnumMap { - map<int32, objc.protobuf.tests.import.ImportEnumForMap> import_enum_amp = 1; + map<int32, objc.protobuf.tests.import.EnumForMap> import_enum_amp = 1; } message TestIntIntMap {
diff --git a/objectivec/Tests/map_unittest.proto b/objectivec/Tests/map_unittest.proto index 8a4a529..ba41439 100644 --- a/objectivec/Tests/map_unittest.proto +++ b/objectivec/Tests/map_unittest.proto
@@ -32,11 +32,11 @@ import "objectivec/Tests/unittest.proto"; -// We don't put this in a package within proto2 because we need to make sure -// that the generated code doesn't depend on being in the proto2 namespace. -// In map_test_util.h we do "using namespace unittest = objc.protobuf.tests". package objc.protobuf.tests; +// Explicit empty prefix, tests some validations code paths also. +option objc_class_prefix = ""; + // Tests maps. message TestMap { map<int32, int32> map_int32_int32 = 1;
diff --git a/objectivec/Tests/unittest.proto b/objectivec/Tests/unittest.proto index 6414993..31353b4 100644 --- a/objectivec/Tests/unittest.proto +++ b/objectivec/Tests/unittest.proto
@@ -28,21 +28,15 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// A proto file we will use for unit testing. -// // LINT: ALLOW_GROUPS, LEGACY_NAMES syntax = "proto2"; import "objectivec/Tests/unittest_import.proto"; -// We don't put this in a package within proto2 because we need to make sure -// that the generated code doesn't depend on being in the proto2 namespace. -// In test_util.h we do "using namespace unittest = objc.protobuf.tests". +// Explicit empty prefix, tests some validations code paths also. +option objc_class_prefix = ""; + package objc.protobuf.tests; // This proto includes every type of field in both singular and repeated @@ -85,17 +79,17 @@ optional NestedMessage optional_nested_message = 18; optional ForeignMessage optional_foreign_message = 19; - optional objc.protobuf.tests.import.ImportMessage optional_import_message = 20; + optional objc.protobuf.tests.import.Message optional_import_message = 20; optional NestedEnum optional_nested_enum = 21; optional ForeignEnum optional_foreign_enum = 22; - optional objc.protobuf.tests.import.ImportEnum optional_import_enum = 23; + optional objc.protobuf.tests.import.Enum optional_import_enum = 23; optional string optional_string_piece = 24 [ctype=STRING_PIECE]; optional string optional_cord = 25 [ctype=CORD]; // Defined in unittest_import_public.proto - optional objc.protobuf.tests.import.PublicImportMessage + optional objc.protobuf.tests.public_import.Message optional_public_import_message = 26; optional NestedMessage optional_lazy_message = 27 [lazy=true]; @@ -124,11 +118,11 @@ repeated NestedMessage repeated_nested_message = 48; repeated ForeignMessage repeated_foreign_message = 49; - repeated objc.protobuf.tests.import.ImportMessage repeated_import_message = 50; + repeated objc.protobuf.tests.import.Message repeated_import_message = 50; repeated NestedEnum repeated_nested_enum = 51; repeated ForeignEnum repeated_foreign_enum = 52; - repeated objc.protobuf.tests.import.ImportEnum repeated_import_enum = 53; + repeated objc.protobuf.tests.import.Enum repeated_import_enum = 53; repeated string repeated_string_piece = 54 [ctype=STRING_PIECE]; repeated string repeated_cord = 55 [ctype=CORD]; @@ -154,7 +148,7 @@ optional NestedEnum default_nested_enum = 81 [default = BAR ]; optional ForeignEnum default_foreign_enum = 82 [default = FOREIGN_BAR]; - optional objc.protobuf.tests.import.ImportEnum + optional objc.protobuf.tests.import.Enum default_import_enum = 83 [default = IMPORT_BAR]; optional string default_string_piece = 84 [ctype=STRING_PIECE,default="abc"]; @@ -241,18 +235,18 @@ optional TestAllTypes.NestedMessage optional_nested_message_extension = 18; optional ForeignMessage optional_foreign_message_extension = 19; - optional objc.protobuf.tests.import.ImportMessage + optional objc.protobuf.tests.import.Message optional_import_message_extension = 20; optional TestAllTypes.NestedEnum optional_nested_enum_extension = 21; optional ForeignEnum optional_foreign_enum_extension = 22; - optional objc.protobuf.tests.import.ImportEnum + optional objc.protobuf.tests.import.Enum optional_import_enum_extension = 23; optional string optional_string_piece_extension = 24 [ctype=STRING_PIECE]; optional string optional_cord_extension = 25 [ctype=CORD]; - optional objc.protobuf.tests.import.PublicImportMessage + optional objc.protobuf.tests.public_import.Message optional_public_import_message_extension = 26; optional TestAllTypes.NestedMessage @@ -283,12 +277,12 @@ repeated TestAllTypes.NestedMessage repeated_nested_message_extension = 48; repeated ForeignMessage repeated_foreign_message_extension = 49; - repeated objc.protobuf.tests.import.ImportMessage + repeated objc.protobuf.tests.import.Message repeated_import_message_extension = 50; repeated TestAllTypes.NestedEnum repeated_nested_enum_extension = 51; repeated ForeignEnum repeated_foreign_enum_extension = 52; - repeated objc.protobuf.tests.import.ImportEnum + repeated objc.protobuf.tests.import.Enum repeated_import_enum_extension = 53; repeated string repeated_string_piece_extension = 54 [ctype=STRING_PIECE]; @@ -318,7 +312,7 @@ default_nested_enum_extension = 81 [default = BAR]; optional ForeignEnum default_foreign_enum_extension = 82 [default = FOREIGN_BAR]; - optional objc.protobuf.tests.import.ImportEnum + optional objc.protobuf.tests.import.Enum default_import_enum_extension = 83 [default = IMPORT_BAR]; optional string default_string_piece_extension = 84 [ctype=STRING_PIECE,
diff --git a/objectivec/Tests/unittest_cycle.proto b/objectivec/Tests/unittest_cycle.proto index 6d6927d..91e33ce 100644 --- a/objectivec/Tests/unittest_cycle.proto +++ b/objectivec/Tests/unittest_cycle.proto
@@ -29,7 +29,9 @@ syntax = "proto2"; -package objc.protobuf.tests; +package objc.protobuf.tests.cycle; + +option objc_class_prefix = "Cycle"; // Cycles in the Message graph can cause problems for message class // initialization order. @@ -37,20 +39,20 @@ // You can't make a object graph that spans files, so this can only be done // within a single proto file. -message CycleFoo { - optional CycleFoo a_foo = 1; - optional CycleBar a_bar = 2; - optional CycleBaz a_baz = 3; +message Foo { + optional Foo a_foo = 1; + optional Bar a_bar = 2; + optional Baz a_baz = 3; } -message CycleBar { - optional CycleBar a_bar = 1; - optional CycleBaz a_baz = 2; - optional CycleFoo a_foo = 3; +message Bar { + optional Bar a_bar = 1; + optional Baz a_baz = 2; + optional Foo a_foo = 3; } -message CycleBaz { - optional CycleBaz a_baz = 1; - optional CycleFoo a_foo = 2; - optional CycleBar a_bar = 3; +message Baz { + optional Baz a_baz = 1; + optional Foo a_foo = 2; + optional Bar a_bar = 3; }
diff --git a/objectivec/Tests/unittest_extension_chain_a.proto b/objectivec/Tests/unittest_extension_chain_a.proto index bcce42a..2e09a40 100644 --- a/objectivec/Tests/unittest_extension_chain_a.proto +++ b/objectivec/Tests/unittest_extension_chain_a.proto
@@ -29,7 +29,7 @@ syntax = "proto2"; -package objc.protobuf.tests; +package objc.protobuf.tests.chain; import "objectivec/Tests/unittest.proto"; @@ -37,15 +37,17 @@ import "objectivec/Tests/unittest_extension_chain_c.proto"; import "objectivec/Tests/unittest_extension_chain_d.proto"; +option objc_class_prefix = "Chain"; + // The Root for this file should end up adding the local extension and merging // in the extensions from D's Root (unittest and C will come via D's). -message ChainAMessage { - optional ChainBMessage b = 1; - optional ChainCMessage c = 2; - optional ChainDMessage d = 3; +message AMessage { + optional BMessage b = 1; + optional CMessage c = 2; + optional DMessage d = 3; } -extend TestAllExtensions { +extend objc.protobuf.tests.TestAllExtensions { optional int32 chain_a_extension = 10001; }
diff --git a/objectivec/Tests/unittest_extension_chain_b.proto b/objectivec/Tests/unittest_extension_chain_b.proto index a4055fe..5cf7ea3 100644 --- a/objectivec/Tests/unittest_extension_chain_b.proto +++ b/objectivec/Tests/unittest_extension_chain_b.proto
@@ -29,19 +29,21 @@ syntax = "proto2"; -package objc.protobuf.tests; +package objc.protobuf.tests.chain; import "objectivec/Tests/unittest.proto"; import "objectivec/Tests/unittest_extension_chain_c.proto"; +option objc_class_prefix = "Chain"; + // The Root for this file should end up adding the local extension and merging // in the extensions from C's Root (unittest will come via C's). -message ChainBMessage { - optional ChainCMessage c = 1; +message BMessage { + optional CMessage c = 1; } -extend TestAllExtensions { +extend objc.protobuf.tests.TestAllExtensions { optional int32 chain_b_extension = 10002; }
diff --git a/objectivec/Tests/unittest_extension_chain_c.proto b/objectivec/Tests/unittest_extension_chain_c.proto index b30e20b..b07b288 100644 --- a/objectivec/Tests/unittest_extension_chain_c.proto +++ b/objectivec/Tests/unittest_extension_chain_c.proto
@@ -29,17 +29,19 @@ syntax = "proto2"; -package objc.protobuf.tests; +package objc.protobuf.tests.chain; import "objectivec/Tests/unittest.proto"; +option objc_class_prefix = "Chain"; + // The Root for this file should end up adding the local extension and merging // in the extensions from unittest.proto's Root. -message ChainCMessage { +message CMessage { optional int32 my_field = 1; } -extend TestAllExtensions { +extend objc.protobuf.tests.TestAllExtensions { optional int32 chain_c_extension = 10003; }
diff --git a/objectivec/Tests/unittest_extension_chain_d.proto b/objectivec/Tests/unittest_extension_chain_d.proto index f12040b..44d9ee8 100644 --- a/objectivec/Tests/unittest_extension_chain_d.proto +++ b/objectivec/Tests/unittest_extension_chain_d.proto
@@ -29,21 +29,23 @@ syntax = "proto2"; -package objc.protobuf.tests; +package objc.protobuf.tests.chain; import "objectivec/Tests/unittest.proto"; import "objectivec/Tests/unittest_extension_chain_b.proto"; import "objectivec/Tests/unittest_extension_chain_c.proto"; +option objc_class_prefix = "Chain"; + // The root should end up needing to merge B (C will be merged into B, so it // doesn't need to be directly merged). -message ChainDMessage { - optional ChainBMessage b = 1; - optional ChainCMessage c = 2; +message DMessage { + optional BMessage b = 1; + optional CMessage c = 2; } -extend TestAllExtensions { +extend objc.protobuf.tests.TestAllExtensions { optional int32 chain_d_extension = 10004; }
diff --git a/objectivec/Tests/unittest_extension_chain_e.proto b/objectivec/Tests/unittest_extension_chain_e.proto index 6087fd0..9c7cea8 100644 --- a/objectivec/Tests/unittest_extension_chain_e.proto +++ b/objectivec/Tests/unittest_extension_chain_e.proto
@@ -29,12 +29,14 @@ syntax = "proto2"; -package objc.protobuf.tests; +package objc.protobuf.tests.chain; import "objectivec/Tests/unittest.proto"; +option objc_class_prefix = "Chain"; + // The Root for this file should end up just merging in unittest's Root. -message ChainEMessage { +message EMessage { optional TestAllTypes my_field = 1; }
diff --git a/objectivec/Tests/unittest_extension_chain_f.proto b/objectivec/Tests/unittest_extension_chain_f.proto index 520f895..33fcaf9 100644 --- a/objectivec/Tests/unittest_extension_chain_f.proto +++ b/objectivec/Tests/unittest_extension_chain_f.proto
@@ -29,16 +29,18 @@ syntax = "proto2"; -package objc.protobuf.tests; +package objc.protobuf.tests.chain; import "objectivec/Tests/unittest_extension_chain_g.proto"; +option objc_class_prefix = "Chain"; + // The Root for this file should just be merging in the extensions from C's // Root (because G doesn't define anything itself). // The generated source will also have to directly import C's .h file so it can // compile the reference to C's Root class. -message ChainFMessage { - optional ChainGMessage g = 1; +message FMessage { + optional GMessage g = 1; }
diff --git a/objectivec/Tests/unittest_extension_chain_g.proto b/objectivec/Tests/unittest_extension_chain_g.proto index 435e8e6..9044e46 100644 --- a/objectivec/Tests/unittest_extension_chain_g.proto +++ b/objectivec/Tests/unittest_extension_chain_g.proto
@@ -29,13 +29,15 @@ syntax = "proto2"; -package objc.protobuf.tests; +package objc.protobuf.tests.chain; import "objectivec/Tests/unittest_extension_chain_c.proto"; +option objc_class_prefix = "Chain"; + // The Root for this file should just be merging in the extensions from C's // Root. -message ChainGMessage { - optional ChainCMessage c = 1; +message GMessage { + optional CMessage c = 1; }
diff --git a/objectivec/Tests/unittest_import.proto b/objectivec/Tests/unittest_import.proto index 7d3ee25..8b8996f 100644 --- a/objectivec/Tests/unittest_import.proto +++ b/objectivec/Tests/unittest_import.proto
@@ -28,10 +28,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// // A proto file which is imported by unittest.proto to test importing. syntax = "proto2"; @@ -41,11 +37,13 @@ // Test public import import public "objectivec/Tests/unittest_import_public.proto"; -message ImportMessage { +option objc_class_prefix = "Import"; + +message Message { optional int32 d = 1; } -enum ImportEnum { +enum Enum { IMPORT_FOO = 7; IMPORT_BAR = 8; IMPORT_BAZ = 9; @@ -53,7 +51,7 @@ // To use an enum in a map, it must has the first value as 0. -enum ImportEnumForMap { +enum EnumForMap { UNKNOWN = 0; FOO = 1; BAR = 2;
diff --git a/objectivec/Tests/unittest_import_public.proto b/objectivec/Tests/unittest_import_public.proto index c7f8ed8..05969b6 100644 --- a/objectivec/Tests/unittest_import_public.proto +++ b/objectivec/Tests/unittest_import_public.proto
@@ -32,8 +32,10 @@ syntax = "proto2"; -package objc.protobuf.tests.import; +package objc.protobuf.tests.public_import; -message PublicImportMessage { +option objc_class_prefix = "PublicImport"; + +message Message { optional int32 e = 1; }
diff --git a/objectivec/Tests/unittest_import_public_lite.proto b/objectivec/Tests/unittest_import_public_lite.proto deleted file mode 100644 index 92d95b9..0000000 --- a/objectivec/Tests/unittest_import_public_lite.proto +++ /dev/null
@@ -1,41 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: liujisi@google.com (Pherl Liu) - -syntax = "proto2"; - -package objc.protobuf.tests.import; - -option optimize_for = LITE_RUNTIME; - -message PublicImportMessageLite { - optional int32 e = 1; -}
diff --git a/objectivec/Tests/unittest_mset.proto b/objectivec/Tests/unittest_mset.proto index e53040b..9ff070f 100644 --- a/objectivec/Tests/unittest_mset.proto +++ b/objectivec/Tests/unittest_mset.proto
@@ -28,68 +28,34 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// This file is similar to unittest_mset_wire_format.proto, but does not -// have a TestMessageSet, so it can be downgraded to proto1. - syntax = "proto2"; -import "objectivec/Tests/unittest_mset_wire_format.proto"; +package objc.protobuf.tests.mset; -package objc.protobuf.tests; +option objc_class_prefix = "MSet"; -message TestMessageSetContainer { - optional objc.protobuf.tests.wireformat.TestMessageSet message_set = 1; +// A message with message_set_wire_format. +message Message { + option message_set_wire_format = true; + extensions 4 to max; } -message NestedTestMessageSetContainer { - optional TestMessageSetContainer container = 1; - optional NestedTestMessageSetContainer child = 2; -} - -message NestedTestInt { - optional fixed32 a = 1; - optional int32 b = 3; - optional NestedTestInt child = 2; -} - -message TestMessageSetExtension1 { - extend objc.protobuf.tests.wireformat.TestMessageSet { - optional TestMessageSetExtension1 message_set_extension = 1545008; +message MessageExtension1 { + extend Message { + optional MessageExtension1 message_set_extension = 1545008; } optional int32 i = 15; - optional objc.protobuf.tests.wireformat.TestMessageSet recursive = 16; + optional Message recursive = 16; optional string test_aliasing = 17 [ctype = STRING_PIECE]; } -message TestMessageSetExtension2 { - extend objc.protobuf.tests.wireformat.TestMessageSet { - optional TestMessageSetExtension2 message_set_extension = 1547769; +message MessageExtension2 { + extend Message { + optional MessageExtension2 message_set_extension = 1547769; } optional string str = 25; } -message TestMessageSetExtension3 { - extend objc.protobuf.tests.wireformat.TestMessageSet { - optional TestMessageSetExtension3 message_set_extension = 195273129; - } - optional NestedTestInt msg = 35; -} - -// This message was used to generate -// //net/proto2/python/internal/testdata/message_set_message, but is commented -// out since it must not actually exist in code, to simulate an "unknown" -// extension. -// message TestMessageSetUnknownExtension { -// extend TestMessageSet { -// optional TestMessageSetUnknownExtension message_set_extension = 56141421; -// } -// optional int64 a = 1; -// } - // MessageSet wire format is equivalent to this. message RawMessageSet { repeated group Item = 1 {
diff --git a/objectivec/Tests/unittest_mset_wire_format.proto b/objectivec/Tests/unittest_mset_wire_format.proto deleted file mode 100644 index d0150ad..0000000 --- a/objectivec/Tests/unittest_mset_wire_format.proto +++ /dev/null
@@ -1,48 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// This file contains messages for testing message_set_wire_format. - -syntax = "proto2"; -package objc.protobuf.tests.wireformat; - -// A message with message_set_wire_format. -message TestMessageSet { - option message_set_wire_format = true; - extensions 4 to max; -} - -message TestMessageSetWireFormatContainer { - optional TestMessageSet message_set = 1; -}
diff --git a/objectivec/Tests/unittest_objc.proto b/objectivec/Tests/unittest_objc.proto index 63da921..aed200b 100644 --- a/objectivec/Tests/unittest_objc.proto +++ b/objectivec/Tests/unittest_objc.proto
@@ -34,6 +34,9 @@ package objc.protobuf.tests; +// Explicit empty prefix, tests some validations code paths also. +option objc_class_prefix = ""; + // Used to check that Headerdocs and appledoc work correctly. If these comments // are not handled correctly, Xcode will fail to build the tests. message TestGeneratedComments {
diff --git a/objectivec/Tests/unittest_objc_startup.proto b/objectivec/Tests/unittest_objc_startup.proto index 711431c..f2bf9d5 100644 --- a/objectivec/Tests/unittest_objc_startup.proto +++ b/objectivec/Tests/unittest_objc_startup.proto
@@ -31,19 +31,20 @@ syntax = "proto2"; package objc.protobuf.tests.startup; +option objc_class_prefix = "TestObjCStartup"; -message TestObjCStartupMessage { +message Message { extensions 1 to max; } -extend TestObjCStartupMessage { +extend Message { // Singular optional int32 optional_int32_extension = 1; repeated int32 repeated_int32_extension = 2; } -message TestObjCStartupNested { - extend TestObjCStartupMessage { +message Nested { + extend Message { optional string nested_string_extension = 3; } }
diff --git a/objectivec/Tests/unittest_runtime_proto2.proto b/objectivec/Tests/unittest_runtime_proto2.proto index 3be7f33..12c2b1c 100644 --- a/objectivec/Tests/unittest_runtime_proto2.proto +++ b/objectivec/Tests/unittest_runtime_proto2.proto
@@ -29,8 +29,11 @@ syntax = "proto2"; +// Explicit empty prefix, tests some validations code paths also. package objc.protobuf.tests; +option objc_class_prefix = ""; + message Message2 { enum Enum { FOO = 0;
diff --git a/objectivec/Tests/unittest_runtime_proto3.proto b/objectivec/Tests/unittest_runtime_proto3.proto index 6dacbbb..d6d4380 100644 --- a/objectivec/Tests/unittest_runtime_proto3.proto +++ b/objectivec/Tests/unittest_runtime_proto3.proto
@@ -29,8 +29,11 @@ syntax = "proto3"; +// Explicit empty prefix, tests some validations code paths also. package objc.protobuf.tests; +option objc_class_prefix = ""; + message Message3 { enum Enum { FOO = 0;