github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/golang/protobuf/protoc-gen-go_test.go (about) 1 package protobuf_test 2 3 import ( 4 "testing" 5 6 "github.com/stackb/rules_proto/pkg/plugin/golang/protobuf" 7 "github.com/stackb/rules_proto/pkg/plugintest" 8 ) 9 10 func TestProtocGenGoPlugin(t *testing.T) { 11 plugintest.Cases(t, &protobuf.ProtocGenGoPlugin{}, map[string]plugintest.Case{ 12 "simple": { 13 Input: "message M{}", 14 Directives: plugintest.WithDirectives( 15 "proto_plugin", "protoc-gen-go implementation golang:protobuf:protoc-gen-go", 16 ), 17 PluginName: "protoc-gen-go", 18 Configuration: plugintest.WithConfiguration( 19 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/golang/protobuf:protoc-gen-go"), 20 plugintest.WithOutputs("test.pb.go"), 21 ), 22 SkipIntegration: true, 23 }, 24 "option go_package": { 25 Input: "option go_package=\"github.com/example.com/test\";\nmessage M{}", 26 Directives: plugintest.WithDirectives( 27 "proto_plugin", "protoc-gen-go implementation golang:protobuf:protoc-gen-go", 28 ), 29 PluginName: "protoc-gen-go", 30 Configuration: plugintest.WithConfiguration( 31 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/golang/protobuf:protoc-gen-go"), 32 plugintest.WithOutputs("github.com/example.com/test/test.pb.go"), 33 ), 34 SkipIntegration: true, 35 }, 36 "import mapping": { 37 Input: "message M{}", 38 Directives: plugintest.WithDirectives( 39 "proto_plugin", "protoc-gen-go implementation golang:protobuf:protoc-gen-go", 40 "proto_plugin", "protoc-gen-go option Mtest.proto=github.com/example.com/test", 41 ), 42 PluginName: "protoc-gen-go", 43 Configuration: plugintest.WithConfiguration( 44 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/golang/protobuf:protoc-gen-go"), 45 plugintest.WithOptions("Mtest.proto=github.com/example.com/test"), 46 plugintest.WithOutputs("github.com/example.com/test/test.pb.go"), 47 ), 48 SkipIntegration: true, 49 }, 50 "does not filter non-relevant options (this is done in the resolve phase)": { 51 Input: "message M{}", 52 Directives: plugintest.WithDirectives( 53 "proto_plugin", "protoc-gen-go implementation golang:protobuf:protoc-gen-go", 54 "proto_plugin", "protoc-gen-go option Mtest.proto=github.com/example.com/test", 55 "proto_plugin", "protoc-gen-go option Mfoo.proto=github.com/example.com/foo", 56 ), 57 PluginName: "protoc-gen-go", 58 Configuration: plugintest.WithConfiguration( 59 plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/golang/protobuf:protoc-gen-go"), 60 plugintest.WithOptions( 61 "Mfoo.proto=github.com/example.com/foo", 62 "Mtest.proto=github.com/example.com/test", 63 ), 64 plugintest.WithOutputs("github.com/example.com/test/test.pb.go"), 65 ), 66 SkipIntegration: true, 67 }, 68 }) 69 }