github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/pkg/plugin/stephenh/ts-proto/protoc-gen-ts-proto_test.go (about)

     1  package ts_proto_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	ts_proto "github.com/stackb/rules_proto/pkg/plugin/stephenh/ts-proto"
     7  	"github.com/stackb/rules_proto/pkg/plugintest"
     8  )
     9  
    10  func TestProtocGenTsProtoPlugin(t *testing.T) {
    11  	plugintest.Cases(t, &ts_proto.ProtocGenTsProto{}, map[string]plugintest.Case{
    12  		"simple": {
    13  			Input: "message M{}",
    14  			Directives: plugintest.WithDirectives(
    15  				"proto_plugin", "protoc-gen-ts-proto implementation stephenh:ts-proto:protoc-gen-ts-proto",
    16  			),
    17  			PluginName: "protoc-gen-ts-proto",
    18  			Configuration: plugintest.WithConfiguration(
    19  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/stephenh/ts-proto:protoc-gen-ts-proto"),
    20  				plugintest.WithOutputs("test.ts"),
    21  			),
    22  			SkipIntegration: true,
    23  		},
    24  		"flag --exclude_output": {
    25  			Input: "message M{}",
    26  			Directives: plugintest.WithDirectives(
    27  				"proto_plugin", "protoc-gen-ts-proto implementation stephenh:ts-proto:protoc-gen-ts-proto",
    28  				"proto_plugin", "protoc-gen-ts-proto flag --exclude_output=test.ts",
    29  			),
    30  			PluginName: "protoc-gen-ts-proto",
    31  			Configuration: plugintest.WithConfiguration(
    32  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/stephenh/ts-proto:protoc-gen-ts-proto"),
    33  				plugintest.WithOutputs(),
    34  			),
    35  			SkipIntegration: true,
    36  		},
    37  		"includes only relevant M options": {
    38  			Input: `
    39  syntax = "proto3";
    40  
    41  package corp.common;
    42  
    43  import "google/type/datetime.proto";
    44  import "google/protobuf/duration.proto";
    45  
    46  message M {}
    47  `,
    48  			Directives: plugintest.WithDirectives(
    49  				"proto_plugin", "protoc-gen-ts-proto implementation stephenh:ts-proto:protoc-gen-ts-proto",
    50  				"proto_plugin", "protoc-gen-ts-proto option Mgoogle/protobuf/empty.proto=./external/protobufapis/google/protobuf/empty",
    51  				"proto_plugin", "protoc-gen-ts-proto option Mgoogle/protobuf/timestamp.proto=./external/protobufapis/google/protobuf/timestamp",
    52  				"proto_plugin", "protoc-gen-ts-proto option Mgoogle/protobuf/duration.proto=./external/protobufapis/google/protobuf/duration",
    53  				"proto_plugin", "protoc-gen-ts-proto option Mgoogle/type/timeofday.proto=./external/googleapis/google/type/timeofday",
    54  				"proto_plugin", "protoc-gen-ts-proto option Mgoogle/type/datetime.proto=./external/googleapis/google/type/datetime",
    55  			),
    56  			PluginName: "protoc-gen-ts-proto",
    57  			Configuration: plugintest.WithConfiguration(
    58  				plugintest.WithLabel(t, "@build_stack_rules_proto//plugin/stephenh/ts-proto:protoc-gen-ts-proto"),
    59  				plugintest.WithOutputs("test.ts"),
    60  				plugintest.WithOptions(
    61  					"Mgoogle/protobuf/duration.proto=./external/protobufapis/google/protobuf/duration",
    62  					"Mgoogle/type/datetime.proto=./external/googleapis/google/type/datetime",
    63  				),
    64  			),
    65  			SkipIntegration: true,
    66  		},
    67  	})
    68  }