github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/builtin/cpp_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 TestCppPlugin(t *testing.T) {
    11  	plugintest.Cases(t, &builtin.CppPlugin{}, map[string]plugintest.Case{
    12  		"empty file": {
    13  			Input: "",
    14  			Directives: plugintest.WithDirectives(
    15  				"proto_plugin", "cpp implementation builtin:cpp",
    16  			),
    17  			PluginName: "cpp",
    18  			Configuration: plugintest.WithConfiguration(
    19  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"),
    20  				plugintest.WithOutputs("test.pb.cc", "test.pb.h"),
    21  			),
    22  		},
    23  		"only services": {
    24  			Input:      "service S{}",
    25  			PluginName: "cpp",
    26  			Directives: plugintest.WithDirectives(
    27  				"proto_plugin", "cpp implementation builtin:cpp",
    28  			),
    29  			Configuration: plugintest.WithConfiguration(
    30  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"),
    31  				plugintest.WithOutputs("test.pb.cc", "test.pb.h"),
    32  			),
    33  		},
    34  		"with a package": {
    35  			Input:      "package pkg;\n\nmessage M{}",
    36  			PluginName: "cpp",
    37  			Directives: plugintest.WithDirectives(
    38  				"proto_plugin", "cpp implementation builtin:cpp",
    39  			),
    40  			Configuration: plugintest.WithConfiguration(
    41  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"),
    42  				plugintest.WithOutputs("test.pb.cc", "test.pb.h"),
    43  			),
    44  		},
    45  		"in a relative directory": {
    46  			Rel:        "rel",
    47  			Input:      "package a;\n\nmessage M{}",
    48  			PluginName: "cpp",
    49  			Directives: plugintest.WithDirectives(
    50  				"proto_plugin", "cpp implementation builtin:cpp",
    51  			),
    52  			Configuration: plugintest.WithConfiguration(
    53  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"),
    54  				plugintest.WithOutputs("rel/test.pb.cc", "rel/test.pb.h"),
    55  			),
    56  		},
    57  		"snake_case": {
    58  			Basename:   "snake_case",
    59  			Input:      "message M{}",
    60  			PluginName: "cpp",
    61  			Directives: plugintest.WithDirectives(
    62  				"proto_plugin", "cpp implementation builtin:cpp",
    63  			),
    64  			Configuration: plugintest.WithConfiguration(
    65  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"),
    66  				plugintest.WithOutputs("snake_case.pb.cc", "snake_case.pb.h"),
    67  			),
    68  		},
    69  		"PascalCase": {
    70  			Basename:   "PascalCase",
    71  			Input:      "message M{}",
    72  			PluginName: "cpp",
    73  			Directives: plugintest.WithDirectives(
    74  				"proto_plugin", "cpp implementation builtin:cpp",
    75  			),
    76  			Configuration: plugintest.WithConfiguration(
    77  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"),
    78  				plugintest.WithOutputs("PascalCase.pb.cc", "PascalCase.pb.h"),
    79  			),
    80  		},
    81  		"camelCase": {
    82  			Basename:   "camelCase",
    83  			Input:      "message M{}",
    84  			PluginName: "cpp",
    85  			Directives: plugintest.WithDirectives(
    86  				"proto_plugin", "cpp implementation builtin:cpp",
    87  			),
    88  			Configuration: plugintest.WithConfiguration(
    89  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/builtin:cpp"),
    90  				plugintest.WithOutputs("camelCase.pb.cc", "camelCase.pb.h"),
    91  			),
    92  		},
    93  	})
    94  }