github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/builtin/csharp_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 TestCsharpPlugin(t *testing.T) { 11 plugintest.Cases(t, &builtin.CsharpPlugin{}, map[string]plugintest.Case{ 12 // --csharp_out always generates output files 13 "empty file": { 14 Input: "", 15 Directives: plugintest.WithDirectives( 16 "proto_plugin", "csharp implementation builtin:csharp", 17 ), 18 PluginName: "csharp", 19 Configuration: plugintest.WithConfiguration( 20 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:csharp"), 21 plugintest.WithOutputs("Test.cs"), 22 ), 23 }, 24 // per-object generated files 25 "single enum message service": { 26 Input: "enum E{U=0;} message M{} service S{}", 27 Directives: plugintest.WithDirectives( 28 "proto_plugin", "csharp implementation builtin:csharp", 29 ), 30 PluginName: "csharp", 31 Configuration: plugintest.WithConfiguration( 32 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:csharp"), 33 plugintest.WithOutputs("Test.cs"), 34 ), 35 }, 36 // package does not affect output location 37 "package enum message service": { 38 Input: "package p; enum E{U=0;} message M{} service S{}", 39 Directives: plugintest.WithDirectives( 40 "proto_plugin", "csharp implementation builtin:csharp", 41 ), 42 PluginName: "csharp", 43 Configuration: plugintest.WithConfiguration( 44 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:csharp"), 45 plugintest.WithOutputs("Test.cs"), 46 ), 47 }, 48 "csharp_namespace does not on affect output location": { 49 Input: "package p; option csharp_namespace=\"Aa.Bb.Cc\"; enum E{U=0;} message M{} service S{}", 50 Directives: plugintest.WithDirectives( 51 "proto_plugin", "csharp implementation builtin:csharp", 52 ), 53 PluginName: "csharp", 54 Configuration: plugintest.WithConfiguration( 55 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:csharp"), 56 plugintest.WithOutputs("Test.cs"), 57 ), 58 }, 59 "relative directory": { 60 Rel: "rel", 61 Input: "message M{}", 62 Directives: plugintest.WithDirectives( 63 "proto_plugin", "csharp implementation builtin:csharp", 64 ), 65 PluginName: "csharp", 66 Configuration: plugintest.WithConfiguration( 67 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:csharp"), 68 plugintest.WithOutputs("rel/Test.cs"), 69 plugintest.WithOut("rel"), 70 ), 71 }, 72 "basename converted to pascal": { 73 Basename: "foo_bar-baz", 74 Input: "message M{}", 75 Directives: plugintest.WithDirectives( 76 "proto_plugin", "csharp implementation builtin:csharp", 77 ), 78 PluginName: "csharp", 79 Configuration: plugintest.WithConfiguration( 80 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:csharp"), 81 plugintest.WithOutputs("FooBarBaz.cs"), 82 ), 83 }, 84 }) 85 }