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 }