github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/builtin/objc_plugin_test.go (about) 1 package builtin_test 2 3 import ( 4 "testing" 5 6 "github.com/stackb/rules_proto/pkg/plugin/builtin" 7 "github.com/stackb/rules_proto/pkg/plugintest" 8 ) 9 10 func TestObjcPlugin(t *testing.T) { 11 plugintest.Cases(t, &builtin.ObjcPlugin{}, map[string]plugintest.Case{ 12 "empty file": { 13 Input: "", 14 Directives: plugintest.WithDirectives( 15 "proto_plugin", "objc implementation builtin:objc", 16 ), 17 PluginName: "objc", 18 Configuration: plugintest.WithConfiguration( 19 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:objc"), 20 plugintest.WithOutputs("Test.pbobjc.h", "Test.pbobjc.m"), 21 ), 22 }, 23 "single enum message service": { 24 Input: "enum E{U=0;} message M{} service S{}", 25 Directives: plugintest.WithDirectives( 26 "proto_plugin", "objc implementation builtin:objc", 27 ), 28 PluginName: "objc", 29 Configuration: plugintest.WithConfiguration( 30 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:objc"), 31 plugintest.WithOutputs("Test.pbobjc.h", "Test.pbobjc.m"), 32 ), 33 }, 34 "package does not affect output location": { 35 Input: "package p; enum E{U=0;} message M{} service S{}", 36 Directives: plugintest.WithDirectives( 37 "proto_plugin", "objc implementation builtin:objc", 38 ), 39 PluginName: "objc", 40 Configuration: plugintest.WithConfiguration( 41 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:objc"), 42 plugintest.WithOutputs("Test.pbobjc.h", "Test.pbobjc.m"), 43 ), 44 }, 45 "objc_class_prefix does not affect output location": { 46 Input: "package p; option objc_class_prefix=\"CGOOP\"; enum E{U=0;} message M{} service S{}", 47 Directives: plugintest.WithDirectives( 48 "proto_plugin", "objc implementation builtin:objc", 49 ), 50 PluginName: "objc", 51 Configuration: plugintest.WithConfiguration( 52 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:objc"), 53 plugintest.WithOutputs("Test.pbobjc.h", "Test.pbobjc.m"), 54 ), 55 }, 56 "relative directory": { 57 Rel: "rel", 58 Input: "message M{}", 59 Directives: plugintest.WithDirectives( 60 "proto_plugin", "objc implementation builtin:objc", 61 ), 62 PluginName: "objc", 63 Configuration: plugintest.WithConfiguration( 64 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:objc"), 65 plugintest.WithOutputs("rel/Test.pbobjc.h", "rel/Test.pbobjc.m"), 66 ), 67 }, 68 "basename converted to capitalized camel case": { 69 Basename: "foo_bar-baz", 70 Input: "message M{}", 71 Directives: plugintest.WithDirectives( 72 "proto_plugin", "objc implementation builtin:objc", 73 ), 74 PluginName: "objc", 75 Configuration: plugintest.WithConfiguration( 76 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:objc"), 77 plugintest.WithOutputs("FooBarBaz.pbobjc.h", "FooBarBaz.pbobjc.m"), 78 ), 79 }, 80 }) 81 }