@@ -99,6 +99,7 @@ func TestModifyImage(t *testing.T) {
9999 PhpMetadataNamespace : proto .String (`Foo\Empty_\GPBMetadata` ),
100100 PhpNamespace : proto .String (`Foo\Empty_` ),
101101 RubyPackage : proto .String ("Foo::Empty" ),
102+ SwiftPrefix : proto .String ("Foo_Empty_" ),
102103 },
103104 "foo_empty/without_package.proto" : {
104105 // CcEnableArena's default value is true
@@ -125,7 +126,7 @@ func TestModifyImage(t *testing.T) {
125126 PhpNamespace : proto .String (`Bar\All` ),
126127 PyGenericServices : proto .Bool (false ),
127128 RubyPackage : proto .String ("Bar::All" ),
128- SwiftPrefix : proto .String ("bar " ),
129+ SwiftPrefix : proto .String ("Bar_All_ " ),
129130 },
130131 "bar_all/without_package.proto" : {
131132 CcEnableArenas : proto .Bool (true ),
@@ -546,6 +547,65 @@ func TestModifyImageFile(
546547 "foo_all/with_package.proto" : {objcClassPrefixPath },
547548 },
548549 },
550+ {
551+ description : "swift_prefix" ,
552+ dirPathToFullName : map [string ]string {
553+ filepath .Join ("testdata" , "foo" ): "buf.build/acme/foo" ,
554+ filepath .Join ("testdata" , "bar" ): "buf.build/acme/bar" ,
555+ },
556+ config : bufconfig .NewGenerateManagedConfig (
557+ true ,
558+ []bufconfig.ManagedDisableRule {
559+ newTestManagedDisableRule (t , "foo_empty/with_package.proto" , "" , "" , bufconfig .FileOptionSwiftPrefix , bufconfig .FieldOptionUnspecified ),
560+ },
561+ []bufconfig.ManagedOverrideRule {
562+ newTestFileOptionOverrideRule (t , "" , "buf.build/acme/bar" , bufconfig .FileOptionSwiftPrefix , "BAR" ),
563+ newTestFileOptionOverrideRule (t , "" , "buf.build/acme/foo" , bufconfig .FileOptionSwiftPrefix , "FOO" ),
564+ newTestFileOptionOverrideRule (t , "foo_all" , "buf.build/acme/foo" , bufconfig .FileOptionSwiftPrefix , "FOOALL" ),
565+ },
566+ ),
567+ modifyFunc : modifySwiftPrefix ,
568+ filePathToExpectedOptions : map [string ]* descriptorpb.FileOptions {
569+ "bar_empty/with_package.proto" : {
570+ SwiftPrefix : proto .String ("BAR" ),
571+ },
572+ "bar_empty/without_package.proto" : {
573+ SwiftPrefix : proto .String ("BAR" ),
574+ },
575+ // disabled
576+ "foo_empty/with_package.proto" : nil ,
577+ // no package
578+ "foo_empty/without_package.proto" : {
579+ SwiftPrefix : proto .String ("FOO" ),
580+ },
581+ "foo_all/with_package.proto" : {
582+ ObjcClassPrefix : proto .String ("foo" ),
583+ CcEnableArenas : proto .Bool (true ),
584+ CcGenericServices : proto .Bool (true ),
585+ CsharpNamespace : proto .String ("foo" ),
586+ GoPackage : proto .String ("foo" ),
587+ JavaGenericServices : proto .Bool (true ),
588+ JavaMultipleFiles : proto .Bool (true ),
589+ JavaOuterClassname : proto .String ("foo" ),
590+ JavaPackage : proto .String ("foo" ),
591+ JavaStringCheckUtf8 : proto .Bool (true ),
592+ OptimizeFor : descriptorpb .FileOptions_CODE_SIZE .Enum (),
593+ PhpClassPrefix : proto .String ("foo" ),
594+ PhpMetadataNamespace : proto .String ("foo" ),
595+ PhpNamespace : proto .String ("foo" ),
596+ PyGenericServices : proto .Bool (true ),
597+ RubyPackage : proto .String ("foo" ),
598+ SwiftPrefix : proto .String ("FOOALL" ),
599+ },
600+ },
601+ filePathToExpectedMarkedLocationPaths : map [string ][][]int32 {
602+ "bar_empty/with_package.proto" : {swiftPrefixPath },
603+ "bar_empty/without_package.proto" : {swiftPrefixPath },
604+ "foo_empty/without_package.proto" : {swiftPrefixPath },
605+ "foo_all/without_package.proto" : {swiftPrefixPath },
606+ "foo_all/with_package.proto" : {swiftPrefixPath },
607+ },
608+ },
549609 }
550610 for _ , testcase := range testcases {
551611 for _ , includeSourceInfo := range []bool {true , false } {
0 commit comments