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  }