github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/builtin/pyi_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 TestPyiPlugin(t *testing.T) {
    11  	plugintest.Cases(t, &builtin.PyiPlugin{}, map[string]plugintest.Case{
    12  		"empty file": {
    13  			Input: "",
    14  			Directives: plugintest.WithDirectives(
    15  				"proto_plugin", "pyi implementation builtin:pyi",
    16  			),
    17  			PluginName: "pyi",
    18  			Configuration: plugintest.WithConfiguration(
    19  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:pyi"),
    20  				plugintest.WithOutputs("test_pb2.pyi"),
    21  			),
    22  		},
    23  		"only services": {
    24  			Input: "service S{}",
    25  			Directives: plugintest.WithDirectives(
    26  				"proto_plugin", "pyi implementation builtin:pyi",
    27  			),
    28  			PluginName: "pyi",
    29  			Configuration: plugintest.WithConfiguration(
    30  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:pyi"),
    31  				plugintest.WithOutputs("test_pb2.pyi"),
    32  			),
    33  		},
    34  		"with a package": {
    35  			Input: "package pkg;\n\nmessage M{}",
    36  			Directives: plugintest.WithDirectives(
    37  				"proto_plugin", "pyi implementation builtin:pyi",
    38  			),
    39  			PluginName: "pyi",
    40  			Configuration: plugintest.WithConfiguration(
    41  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:pyi"),
    42  				plugintest.WithOutputs("test_pb2.pyi"),
    43  			),
    44  		},
    45  		"relative directory": {
    46  			Rel:   "rel",
    47  			Input: "package a;\n\nmessage M{}",
    48  			Directives: plugintest.WithDirectives(
    49  				"proto_plugin", "pyi implementation builtin:pyi",
    50  			),
    51  			PluginName: "pyi",
    52  			Configuration: plugintest.WithConfiguration(
    53  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:pyi"),
    54  				plugintest.WithOutputs("rel/test_pb2.pyi"),
    55  			),
    56  		},
    57  		"basename replacement": {
    58  			Basename: "a-b*c+d=e|g!h#i",
    59  			Input:    "message M{}",
    60  			Directives: plugintest.WithDirectives(
    61  				"proto_plugin", "pyi implementation builtin:pyi",
    62  			),
    63  			PluginName: "pyi",
    64  			Configuration: plugintest.WithConfiguration(
    65  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:pyi"),
    66  				plugintest.WithOutputs("a_b*c+d=e|g!h#i_pb2.pyi"),
    67  			),
    68  		},
    69  	})
    70  }