github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/builtin/cpp_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 TestCppPlugin(t *testing.T) { 11 plugintest.Cases(t, &builtin.CppPlugin{}, map[string]plugintest.Case{ 12 "empty file": { 13 Input: "", 14 Directives: plugintest.WithDirectives( 15 "proto_plugin", "cpp implementation builtin:cpp", 16 ), 17 PluginName: "cpp", 18 Configuration: plugintest.WithConfiguration( 19 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"), 20 plugintest.WithOutputs("test.pb.cc", "test.pb.h"), 21 ), 22 }, 23 "only services": { 24 Input: "service S{}", 25 PluginName: "cpp", 26 Directives: plugintest.WithDirectives( 27 "proto_plugin", "cpp implementation builtin:cpp", 28 ), 29 Configuration: plugintest.WithConfiguration( 30 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"), 31 plugintest.WithOutputs("test.pb.cc", "test.pb.h"), 32 ), 33 }, 34 "with a package": { 35 Input: "package pkg;\n\nmessage M{}", 36 PluginName: "cpp", 37 Directives: plugintest.WithDirectives( 38 "proto_plugin", "cpp implementation builtin:cpp", 39 ), 40 Configuration: plugintest.WithConfiguration( 41 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"), 42 plugintest.WithOutputs("test.pb.cc", "test.pb.h"), 43 ), 44 }, 45 "in a relative directory": { 46 Rel: "rel", 47 Input: "package a;\n\nmessage M{}", 48 PluginName: "cpp", 49 Directives: plugintest.WithDirectives( 50 "proto_plugin", "cpp implementation builtin:cpp", 51 ), 52 Configuration: plugintest.WithConfiguration( 53 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"), 54 plugintest.WithOutputs("rel/test.pb.cc", "rel/test.pb.h"), 55 ), 56 }, 57 "snake_case": { 58 Basename: "snake_case", 59 Input: "message M{}", 60 PluginName: "cpp", 61 Directives: plugintest.WithDirectives( 62 "proto_plugin", "cpp implementation builtin:cpp", 63 ), 64 Configuration: plugintest.WithConfiguration( 65 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"), 66 plugintest.WithOutputs("snake_case.pb.cc", "snake_case.pb.h"), 67 ), 68 }, 69 "PascalCase": { 70 Basename: "PascalCase", 71 Input: "message M{}", 72 PluginName: "cpp", 73 Directives: plugintest.WithDirectives( 74 "proto_plugin", "cpp implementation builtin:cpp", 75 ), 76 Configuration: plugintest.WithConfiguration( 77 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"), 78 plugintest.WithOutputs("PascalCase.pb.cc", "PascalCase.pb.h"), 79 ), 80 }, 81 "camelCase": { 82 Basename: "camelCase", 83 Input: "message M{}", 84 PluginName: "cpp", 85 Directives: plugintest.WithDirectives( 86 "proto_plugin", "cpp implementation builtin:cpp", 87 ), 88 Configuration: plugintest.WithConfiguration( 89 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"), 90 plugintest.WithOutputs("camelCase.pb.cc", "camelCase.pb.h"), 91 ), 92 }, 93 }) 94 }