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 }