diff --git a/config/testdata/fixtures/create_a_default_global_config_if_both_of_global_and_local_config_are_not_found.golden.toml b/config/testdata/fixtures/create_a_default_global_config_if_both_of_global_and_local_config_are_not_found.golden.toml index 6725fb0d..3acdd78f 100644 --- a/config/testdata/fixtures/create_a_default_global_config_if_both_of_global_and_local_config_are_not_found.golden.toml +++ b/config/testdata/fixtures/create_a_default_global_config_if_both_of_global_and_local_config_are_not_found.golden.toml @@ -10,7 +10,7 @@ [meta] autoupdate = false - configversion = "0.10.5" + configversion = "0.10.6" updatelevel = "patch" [repl] diff --git a/e2e/cli_test.go b/e2e/cli_test.go index 1584b3f2..62061490 100644 --- a/e2e/cli_test.go +++ b/e2e/cli_test.go @@ -515,14 +515,6 @@ func TestE2E_CLI(t *testing.T) { unflatten: true, assertWithGolden: true, }, - "call failure unary RPC with --enrich flag without reflection": { - commonFlags: "--proto testdata/test.proto", - cmd: "call", - args: "--file testdata/unary_call.in --enrich api.Example.UnaryHeaderTrailerFailure", - unflatten: true, - assertWithGolden: true, - expectedCode: 1, - }, "call failure unary RPC with --enrich flag": { commonFlags: "-r", cmd: "call", @@ -550,15 +542,6 @@ func TestE2E_CLI(t *testing.T) { unflatten: true, assertWithGolden: true, }, - "call failure unary RPC with --enrich flag without reflection against to gRPC-Web server": { - commonFlags: "--web --proto testdata/test.proto", - cmd: "call", - args: "--file testdata/unary_call.in --enrich api.Example.UnaryHeaderTrailerFailure", - web: true, - unflatten: true, - assertWithGolden: true, - expectedCode: 1, - }, "call failure unary RPC with --enrich flag against to gRPC-Web server": { commonFlags: "--web -r", cmd: "call", diff --git a/e2e/e2e_test.go b/e2e/e2e_test.go index da6b3e49..3998a1c5 100644 --- a/e2e/e2e_test.go +++ b/e2e/e2e_test.go @@ -53,11 +53,6 @@ func TestMain(m *testing.M) { cleanup2 := setEnv("XDG_CACHE_HOME", cacheDir) defer cleanup2() - // TODO: Make registered types to be independent instead of ignoring conflicts. - // Need to make grpc-status-details-bin decoding to be used a passed registry. - cleanup3 := setEnv("GOLANG_PROTOBUF_REGISTRATION_CONFLICT", "ignore") - defer cleanup3() - goleak.VerifyTestMain(m, goleak.IgnoreTopFunction("github.com/desertbit/timer.timerRoutine")) } diff --git a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_and_json_format.golden b/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_and_json_format.golden index cd375121..b0e923c4 100644 --- a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_and_json_format.golden +++ b/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_and_json_format.golden @@ -22,10 +22,6 @@ "type": "type" } ] - }, - { - "@type": "type.googleapis.com/api.FailureDetail", - "code": "001" } ] }, diff --git a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag.golden b/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag.golden index 70382935..231d64f6 100644 --- a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag.golden +++ b/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag.golden @@ -11,5 +11,4 @@ message: "internal error" details: {"@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [{"description": "description", "field": "field"}]} {"@type": "type.googleapis.com/google.rpc.PreconditionFailure", "violations": [{"description": "description", "subject": "subject", "type": "type"}]} - {"@type": "type.googleapis.com/api.FailureDetail", "code": "001"} diff --git a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_against_to_grpc-web_server.golden b/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_against_to_grpc-web_server.golden index 1d915ab2..55385eb7 100644 --- a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_against_to_grpc-web_server.golden +++ b/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_against_to_grpc-web_server.golden @@ -12,5 +12,4 @@ message: "internal error" details: {"@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [{"description": "description", "field": "field"}]} {"@type": "type.googleapis.com/google.rpc.PreconditionFailure", "violations": [{"description": "description", "subject": "subject", "type": "type"}]} - {"@type": "type.googleapis.com/api.FailureDetail", "code": "001"} diff --git a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_without_reflection.golden b/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_without_reflection.golden deleted file mode 100644 index 70382935..00000000 --- a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_without_reflection.golden +++ /dev/null @@ -1,15 +0,0 @@ -content-type: application/grpc -header_key1: header_val1 -header_key2: header_val2 - -trailer_key1: trailer_val1 -trailer_key2: trailer_val2 - -code: Internal -number: 13 -message: "internal error" -details: - {"@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [{"description": "description", "field": "field"}]} - {"@type": "type.googleapis.com/google.rpc.PreconditionFailure", "violations": [{"description": "description", "subject": "subject", "type": "type"}]} - {"@type": "type.googleapis.com/api.FailureDetail", "code": "001"} - diff --git a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_without_reflection_against_to_grpc-web_server.golden b/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_without_reflection_against_to_grpc-web_server.golden deleted file mode 100644 index 1d915ab2..00000000 --- a/e2e/testdata/fixtures/teste2e_cli-call_failure_unary_rpc_with_--enrich_flag_without_reflection_against_to_grpc-web_server.golden +++ /dev/null @@ -1,16 +0,0 @@ -content-type: application/grpc-web+proto -header_key1: header_val1 -header_key2: header_val2 -vary: Origin - -trailer_key1: trailer_val1 -trailer_key2: trailer_val2 - -code: Internal -number: 13 -message: "internal error" -details: - {"@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [{"description": "description", "field": "field"}]} - {"@type": "type.googleapis.com/google.rpc.PreconditionFailure", "violations": [{"description": "description", "subject": "subject", "type": "type"}]} - {"@type": "type.googleapis.com/api.FailureDetail", "code": "001"} - diff --git a/e2e/testdata/fixtures/teste2e_cli-print_call_command_usage.golden b/e2e/testdata/fixtures/teste2e_cli-print_call_command_usage.golden index ec15f23b..61f845cd 100644 --- a/e2e/testdata/fixtures/teste2e_cli-print_call_command_usage.golden +++ b/e2e/testdata/fixtures/teste2e_cli-print_call_command_usage.golden @@ -1,4 +1,4 @@ -evans 0.10.5 +evans 0.10.6 Usage: evans [global options ...] cli call [options ...] diff --git a/e2e/testdata/fixtures/teste2e_cli-print_desc_command_usage.golden b/e2e/testdata/fixtures/teste2e_cli-print_desc_command_usage.golden index 0a32c29c..0ce2100e 100644 --- a/e2e/testdata/fixtures/teste2e_cli-print_desc_command_usage.golden +++ b/e2e/testdata/fixtures/teste2e_cli-print_desc_command_usage.golden @@ -1,4 +1,4 @@ -evans 0.10.5 +evans 0.10.6 Usage: evans [global options ...] cli desc [options ...] [symbol] diff --git a/e2e/testdata/fixtures/teste2e_cli-print_list_command_usage.golden b/e2e/testdata/fixtures/teste2e_cli-print_list_command_usage.golden index c7d7777b..29ea80be 100644 --- a/e2e/testdata/fixtures/teste2e_cli-print_list_command_usage.golden +++ b/e2e/testdata/fixtures/teste2e_cli-print_list_command_usage.golden @@ -1,4 +1,4 @@ -evans 0.10.5 +evans 0.10.6 Usage: evans [global options ...] cli list [options ...] [fully-qualified service/method name] diff --git a/e2e/testdata/fixtures/teste2e_cli-print_usage_text_to_the_writer.golden b/e2e/testdata/fixtures/teste2e_cli-print_usage_text_to_the_writer.golden index 36152a24..c1f643cc 100644 --- a/e2e/testdata/fixtures/teste2e_cli-print_usage_text_to_the_writer.golden +++ b/e2e/testdata/fixtures/teste2e_cli-print_usage_text_to_the_writer.golden @@ -1,4 +1,4 @@ -evans 0.10.5 +evans 0.10.6 Usage: evans [global options ...] cli diff --git a/e2e/testdata/fixtures/teste2e_cli-print_usage_text_to_the_writer_(common_flag).golden b/e2e/testdata/fixtures/teste2e_cli-print_usage_text_to_the_writer_(common_flag).golden index 36152a24..c1f643cc 100644 --- a/e2e/testdata/fixtures/teste2e_cli-print_usage_text_to_the_writer_(common_flag).golden +++ b/e2e/testdata/fixtures/teste2e_cli-print_usage_text_to_the_writer_(common_flag).golden @@ -1,4 +1,4 @@ -evans 0.10.5 +evans 0.10.6 Usage: evans [global options ...] cli diff --git a/e2e/testdata/fixtures/teste2e_repl-call_unaryheadertrailerfailure_by_selecting_package_and_service_with_enriched_output.golden b/e2e/testdata/fixtures/teste2e_repl-call_unaryheadertrailerfailure_by_selecting_package_and_service_with_enriched_output.golden index 7dd62086..06a8e389 100644 --- a/e2e/testdata/fixtures/teste2e_repl-call_unaryheadertrailerfailure_by_selecting_package_and_service_with_enriched_output.golden +++ b/e2e/testdata/fixtures/teste2e_repl-call_unaryheadertrailerfailure_by_selecting_package_and_service_with_enriched_output.golden @@ -13,6 +13,5 @@ message: "internal error" details: {"@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [{"description": "description", "field": "field"}]} {"@type": "type.googleapis.com/google.rpc.PreconditionFailure", "violations": [{"description": "description", "subject": "subject", "type": "type"}]} - {"@type": "type.googleapis.com/api.FailureDetail", "code": "001"} diff --git a/e2e/testdata/test.proto b/e2e/testdata/test.proto index c2f15fde..38e1f598 100644 --- a/e2e/testdata/test.proto +++ b/e2e/testdata/test.proto @@ -99,7 +99,3 @@ message UnaryHeaderRequest {} message MapResponse { map names = 1; } - -message FailureDetail { - string code = 1; -} diff --git a/go.mod b/go.mod index 912a4bf7..9644f2e3 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/ktr0731/go-prompt v0.2.4 github.com/ktr0731/go-shellstring v0.1.3 github.com/ktr0731/go-updater v0.1.5 - github.com/ktr0731/grpc-test v0.1.11 + github.com/ktr0731/grpc-test v0.1.10 github.com/ktr0731/grpc-web-go-client v0.2.8 github.com/manifoldco/promptui v0.9.0 github.com/matryer/moq v0.2.7 diff --git a/go.sum b/go.sum index 66f7d578..e812c95f 100644 --- a/go.sum +++ b/go.sum @@ -728,8 +728,8 @@ github.com/ktr0731/go-shellstring v0.1.3/go.mod h1:f0/XX0hsm6A02Es/UDQ9MGd3VqpCH github.com/ktr0731/go-updater v0.1.5 h1:AiaQxJoI0OTGqvsJYdIITCOaEzQQOqU2MHKUwttVShY= github.com/ktr0731/go-updater v0.1.5/go.mod h1:dsdOg7a9sj6ttcOU5ZxPCtKdm9WeB1hwcX/7oKgz9/0= github.com/ktr0731/grpc-test v0.1.4/go.mod h1:v47616grayBYXQveGWxO3OwjLB3nEEnHsZuMTc73FM0= -github.com/ktr0731/grpc-test v0.1.11 h1:sXacyTdat8F1SWURSqECG1Cu546A5sYgI88XVexJ66Q= -github.com/ktr0731/grpc-test v0.1.11/go.mod h1:AP4+ZrqSzdDaUNhAsp2fye06MXO2fdYY6YQJifb588M= +github.com/ktr0731/grpc-test v0.1.10 h1:W+fdfNrcSY0+9aiIIx+CWpFcNjdcqysPQchDcuMk4Pk= +github.com/ktr0731/grpc-test v0.1.10/go.mod h1:AP4+ZrqSzdDaUNhAsp2fye06MXO2fdYY6YQJifb588M= github.com/ktr0731/grpc-web-go-client v0.2.8 h1:nUf9p+YWirmFwmH0mwtAWhuXvzovc+/3C/eAY2Fshnk= github.com/ktr0731/grpc-web-go-client v0.2.8/go.mod h1:1Iac8gFJvC/DRfZoGnFZsfEbEq/wQFK+2Ve1o3pHkCQ= github.com/ktr0731/modfile v1.11.2/go.mod h1:LzNwnHJWHbuDh3BO17lIqzqDldXqGu1HCydWH3SinE0= diff --git a/idl/proto/proto.go b/idl/proto/proto.go index d0c20fb3..4e5e98f2 100644 --- a/idl/proto/proto.go +++ b/idl/proto/proto.go @@ -14,9 +14,6 @@ import ( "github.com/ktr0731/evans/grpc/grpcreflection" "github.com/ktr0731/evans/idl" "github.com/pkg/errors" - "google.golang.org/protobuf/reflect/protodesc" - "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/types/dynamicpb" ) type spec struct { @@ -143,7 +140,7 @@ func LoadFiles(importPaths []string, fnames []string) (idl.Spec, error) { fileDescs = append(fileDescs, d.GetDependencies()...) } - return newSpec(fileDescs) + return newSpec(fileDescs), nil } // LoadByReflection receives a gRPC reflection client, then tries to instantiate a new idl.Spec by using gRPC reflection. @@ -152,10 +149,10 @@ func LoadByReflection(client grpcreflection.Client) (idl.Spec, error) { if err != nil { return nil, errors.Wrap(err, "failed to list packages by gRPC reflection") } - return newSpec(fileDescs) + return newSpec(fileDescs), nil } -func newSpec(fds []*desc.FileDescriptor) (idl.Spec, error) { +func newSpec(fds []*desc.FileDescriptor) idl.Spec { var ( encounteredPkgs = make(map[string]interface{}) encounteredSvcs = make(map[string]interface{}) @@ -164,7 +161,6 @@ func newSpec(fds []*desc.FileDescriptor) (idl.Spec, error) { rpcDescs = make(map[string][]*desc.MethodDescriptor) msgDescs = make(map[string]*desc.MessageDescriptor) ) - for _, f := range fds { if _, encountered := encounteredPkgs[f.GetPackage()]; !encountered { pkgNames = append(pkgNames, f.GetPackage()) @@ -179,27 +175,8 @@ func newSpec(fds []*desc.FileDescriptor) (idl.Spec, error) { rpcDescs[fqsn] = append(rpcDescs[fqsn], svc.GetMethods()...) } - prfd, err := protodesc.NewFile(f.AsFileDescriptorProto(), protoregistry.GlobalFiles) - if err != nil { - return nil, errors.Wrapf(err, "failed to new protodesc") - } - - if _, err := protoregistry.GlobalFiles.FindFileByPath(prfd.Path()); errors.Is(err, protoregistry.NotFound) { - if err := protoregistry.GlobalFiles.RegisterFile(prfd); err != nil { - return nil, err - } - } - - for i := 0; i < prfd.Messages().Len(); i++ { - md := prfd.Messages().Get(i) - if _, err := protoregistry.GlobalTypes.FindMessageByName(md.FullName()); !errors.Is(err, protoregistry.NotFound) { - continue - } - - mt := dynamicpb.NewMessageType(md) - if err := protoregistry.GlobalTypes.RegisterMessage(mt); err != nil { - return nil, errors.Wrapf(err, "failed to register message %s", mt.Descriptor().FullName()) - } + for _, m := range f.GetMessageTypes() { + msgDescs[m.GetFullyQualifiedName()] = m } } @@ -213,7 +190,7 @@ func newSpec(fds []*desc.FileDescriptor) (idl.Spec, error) { svcDescs: svcDescs, rpcDescs: rpcDescs, msgDescs: msgDescs, - }, nil + } } // FullyQualifiedServiceName returns the fully-qualified service name. diff --git a/meta/meta.go b/meta/meta.go index 0e1009dd..c8105001 100644 --- a/meta/meta.go +++ b/meta/meta.go @@ -5,5 +5,5 @@ import version "github.com/hashicorp/go-version" const AppName = "evans" var ( - Version = version.Must(version.NewSemver("0.10.5")) + Version = version.Must(version.NewSemver("0.10.6")) )