github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/builtin/php_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 TestPhpPlugin(t *testing.T) {
    11  	plugintest.Cases(t, &builtin.PhpPlugin{}, map[string]plugintest.Case{
    12  		"empty file": {
    13  			Input: "",
    14  			Directives: plugintest.WithDirectives(
    15  				"proto_plugin", "php implementation builtin:php",
    16  			),
    17  			PluginName: "php",
    18  			Configuration: plugintest.WithConfiguration(
    19  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:php"),
    20  				plugintest.WithOutputs("GPBMetadata/Test.php"),
    21  			),
    22  		},
    23  		"single enum message service": {
    24  			Input: "enum E{U=0;} message M{} service S{}",
    25  			Directives: plugintest.WithDirectives(
    26  				"proto_plugin", "php implementation builtin:php",
    27  			),
    28  			PluginName: "php",
    29  			Configuration: plugintest.WithConfiguration(
    30  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:php"),
    31  				plugintest.WithOutputs("GPBMetadata/Test.php", "E.php", "M.php"),
    32  			),
    33  		},
    34  		"package": {
    35  			Input: "package p; enum E{U=0;} message M{} service S{}",
    36  			Directives: plugintest.WithDirectives(
    37  				"proto_plugin", "php implementation builtin:php",
    38  			),
    39  			PluginName: "php",
    40  			Configuration: plugintest.WithConfiguration(
    41  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:php"),
    42  				plugintest.WithOutputs("GPBMetadata/Test.php", "P/E.php", "P/M.php"),
    43  			),
    44  		},
    45  		"php_namespace": {
    46  			Input: "package p; option php_namespace=\"foo\"; enum E{U=0;} message M{} service S{}",
    47  			Directives: plugintest.WithDirectives(
    48  				"proto_plugin", "php implementation builtin:php",
    49  			),
    50  			PluginName: "php",
    51  			Configuration: plugintest.WithConfiguration(
    52  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:php"),
    53  				plugintest.WithOutputs("GPBMetadata/Test.php", "foo/E.php", "foo/M.php"),
    54  			),
    55  		},
    56  		"php_metadata_namespace": {
    57  			Input: "package p; option php_metadata_namespace=\"bar\"; enum E{U=0;} message M{} service S{}",
    58  			Directives: plugintest.WithDirectives(
    59  				"proto_plugin", "php implementation builtin:php",
    60  			),
    61  			PluginName: "php",
    62  			Configuration: plugintest.WithConfiguration(
    63  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:php"),
    64  				plugintest.WithOutputs("bar/Test.php", "P/E.php", "P/M.php"),
    65  			),
    66  		},
    67  		"relative directory": {
    68  			Rel:   "a/b/c",
    69  			Input: "message M{}",
    70  			Directives: plugintest.WithDirectives(
    71  				"proto_plugin", "php implementation builtin:php",
    72  			),
    73  			PluginName: "php",
    74  			Configuration: plugintest.WithConfiguration(
    75  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:php"),
    76  				plugintest.WithOutputs("a/b/c/GPBMetadata/A/B/C/Test.php", "a/b/c/M.php"),
    77  				plugintest.WithOut("a/b/c"),
    78  			),
    79  		},
    80  	})
    81  }