Skip to content

Commit 060cc04

Browse files
jhumpbufdev
andauthored
Remove dependency on grpc-go in internal/testprotos (#519)
* Cleanup CI config to use newer Go versions and newer circleci images * Use newer protoc plugins (separate for normal code vs. gRPC-related code) * Remove dependency on grpc-go in internal/testprotos by not generating gRPC stubs for that package * Copy testprotos.TestService into DummyService in grpc sub-package, since we no longer generate gRPC stubs for testprotos * Update tests to look for DummyService; fix other related errors that fall out of using new protoc grpc plugin Co-authored-by: bufdev <bufdev-github@buf.build>
1 parent 87c1d5f commit 060cc04

19 files changed

+1904
-1723
lines changed

.circleci/config.yml

+30-23
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,51 @@ shared_configs:
1111
version: 2.1
1212

1313
orbs:
14-
win: circleci/windows@2.2.0
14+
win: circleci/windows@4.1.1
1515

1616
jobs:
1717
build-1-13:
1818
working_directory: ~/repo
1919
docker:
20-
- image: circleci/golang:1.13
20+
- image: cimg/go:1.13
2121
steps: *simple_job_steps
2222

2323
build-1-14:
2424
working_directory: ~/repo
2525
docker:
26-
- image: circleci/golang:1.14
26+
- image: cimg/go:1.14
2727
steps: *simple_job_steps
2828

2929
build-1-15:
3030
working_directory: ~/repo
3131
docker:
32-
- image: circleci/golang:1.15
32+
- image: cimg/go:1.15
3333
steps: *simple_job_steps
3434

3535
build-1-16:
3636
working_directory: ~/repo
3737
docker:
38-
- image: circleci/golang:1.16
38+
- image: cimg/go:1.16
39+
steps: *simple_job_steps
40+
41+
build-1-17:
42+
working_directory: ~/repo
43+
docker:
44+
- image: cimg/go:1.17
45+
steps: *simple_job_steps
46+
47+
build-windows: # as of Feb 2022, Go 1.17
48+
executor:
49+
name: win/default
50+
steps:
51+
- run: git config --global core.autocrlf false
52+
- checkout
53+
- run: go test ./...
54+
55+
build-1-18:
56+
working_directory: ~/repo
57+
docker:
58+
- image: cimg/go:1.18
3959
steps:
4060
- checkout
4161
- restore_cache:
@@ -57,24 +77,10 @@ jobs:
5777
#- store_test_results:
5878
# path: /tmp/test-reports
5979

60-
build-1-16-windows:
61-
executor:
62-
name: win/default
63-
steps:
64-
- run: git config --global core.autocrlf false
65-
- checkout
66-
- run: go test ./...
67-
68-
build-1-17:
69-
working_directory: ~/repo
70-
docker:
71-
- image: circleci/golang:1.17
72-
steps: *simple_job_steps
73-
74-
build-1-17-u:
80+
build-1-18-u:
7581
working_directory: ~/repo
7682
docker:
77-
- image: circleci/golang:1.17
83+
- image: cimg/go:1.18
7884
steps:
7985
- checkout
8086
- run:
@@ -93,6 +99,7 @@ workflows:
9399
- build-1-14
94100
- build-1-15
95101
- build-1-16
96-
- build-1-16-windows
97102
- build-1-17
98-
- build-1-17-u
103+
- build-windows
104+
- build-1-18
105+
- build-1-18-u

Makefile

+1-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ ineffassign:
5353

5454
.PHONY: predeclared
5555
predeclared:
56-
@go install github.com/nishanths/predeclared@v0.0.0-20200524104333-86fad755b4d3
56+
@go install github.com/nishanths/predeclared@v0.2.2
5757
predeclared ./...
5858

5959
# Intentionally omitted from CI, but target here for ad-hoc reports.
@@ -76,7 +76,6 @@ test:
7676
.PHONY: generate
7777
generate:
7878
@go install golang.org/x/tools/cmd/goyacc@v0.0.0-20200717024301-6ddee64345a6
79-
@go install github.com/golang/protobuf/protoc-gen-go
8079
go generate ./...
8180

8281
.PHONY: testcover

dynamic/msgregistry/message_registry.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,12 @@ func (r *MessageRegistry) ResolveApiIntoServiceDescriptor(a *api.Api) (*desc.Ser
341341
// UnmarshalAny will unmarshal the value embedded in the given Any value. This will use this
342342
// registry to resolve the given value's type URL. Use this instead of ptypes.UnmarshalAny for
343343
// cases where the type might not be statically linked into the current program.
344-
func (r *MessageRegistry) UnmarshalAny(any *any.Any) (proto.Message, error) {
345-
return r.unmarshalAny(any, r.FindMessageTypeByUrl)
344+
func (r *MessageRegistry) UnmarshalAny(a *any.Any) (proto.Message, error) {
345+
return r.unmarshalAny(a, r.FindMessageTypeByUrl)
346346
}
347347

348-
func (r *MessageRegistry) unmarshalAny(any *any.Any, fetch func(string) (*desc.MessageDescriptor, error)) (proto.Message, error) {
349-
name, err := ptypes.AnyMessageName(any)
348+
func (r *MessageRegistry) unmarshalAny(a *any.Any, fetch func(string) (*desc.MessageDescriptor, error)) (proto.Message, error) {
349+
name, err := ptypes.AnyMessageName(a)
350350
if err != nil {
351351
return nil, err
352352
}
@@ -360,16 +360,16 @@ func (r *MessageRegistry) unmarshalAny(any *any.Any, fetch func(string) (*desc.M
360360
ktr = r.mf.GetKnownTypeRegistry()
361361
}
362362
if msg = ktr.CreateIfKnown(name); msg == nil {
363-
if md, err := fetch(any.TypeUrl); err != nil {
363+
if md, err := fetch(a.TypeUrl); err != nil {
364364
return nil, err
365365
} else if md == nil {
366-
return nil, fmt.Errorf("unknown message type: %s", any.TypeUrl)
366+
return nil, fmt.Errorf("unknown message type: %s", a.TypeUrl)
367367
} else {
368368
msg = mf.NewDynamicMessage(md)
369369
}
370370
}
371371

372-
err = proto.Unmarshal(any.Value, msg)
372+
err = proto.Unmarshal(a.Value, msg)
373373
if err != nil {
374374
return nil, err
375375
} else {

grpcreflect/client_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525

2626
"github.com/jhump/protoreflect/desc"
2727
"github.com/jhump/protoreflect/internal"
28-
"github.com/jhump/protoreflect/internal/testprotos"
28+
testprotosgrpc "github.com/jhump/protoreflect/internal/testprotos/grpc"
2929
"github.com/jhump/protoreflect/internal/testutil"
3030
)
3131

@@ -42,7 +42,7 @@ func TestMain(m *testing.M) {
4242
}()
4343

4444
svr := grpc.NewServer()
45-
testprotos.RegisterTestServiceServer(svr, testService{})
45+
testprotosgrpc.RegisterDummyServiceServer(svr, testService{})
4646
reflection.Register(svr)
4747
l, err := net.Listen("tcp", "127.0.0.1:0")
4848
if err != nil {
@@ -203,7 +203,7 @@ func TestListServices(t *testing.T) {
203203
testutil.Ok(t, err)
204204

205205
sort.Strings(s)
206-
testutil.Eq(t, []string{"grpc.reflection.v1alpha.ServerReflection", "testprotos.TestService"}, s)
206+
testutil.Eq(t, []string{"grpc.reflection.v1alpha.ServerReflection", "testprotos.DummyService"}, s)
207207
}
208208

209209
func TestReset(t *testing.T) {

grpcreflect/server_test.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@ import (
55

66
"google.golang.org/grpc"
77

8-
"github.com/jhump/protoreflect/internal/testprotos"
8+
testprotosgrpc "github.com/jhump/protoreflect/internal/testprotos/grpc"
99
"github.com/jhump/protoreflect/internal/testutil"
1010
)
1111

1212
type testService struct {
13-
testprotos.TestServiceServer
13+
testprotosgrpc.DummyServiceServer
1414
}
1515

1616
func TestLoadServiceDescriptors(t *testing.T) {
1717
s := grpc.NewServer()
18-
testprotos.RegisterTestServiceServer(s, testService{})
18+
testprotosgrpc.RegisterDummyServiceServer(s, testService{})
1919
sds, err := LoadServiceDescriptors(s)
2020
testutil.Ok(t, err)
2121
testutil.Eq(t, 1, len(sds))
22-
sd := sds["testprotos.TestService"]
22+
sd := sds["testprotos.DummyService"]
2323

2424
cases := []struct{ method, request, response string }{
25-
{"DoSomething", "testprotos.TestRequest", "jhump.protoreflect.desc.Bar"},
26-
{"DoSomethingElse", "testprotos.TestMessage", "testprotos.TestResponse"},
25+
{"DoSomething", "testprotos.DummyRequest", "jhump.protoreflect.desc.Bar"},
26+
{"DoSomethingElse", "testprotos.TestMessage", "testprotos.DummyResponse"},
2727
{"DoSomethingAgain", "jhump.protoreflect.desc.Bar", "testprotos.AnotherTestMessage"},
28-
{"DoSomethingForever", "testprotos.TestRequest", "testprotos.TestResponse"},
28+
{"DoSomethingForever", "testprotos.DummyRequest", "testprotos.DummyResponse"},
2929
}
3030

3131
testutil.Eq(t, len(cases), len(sd.GetMethods()))
@@ -39,14 +39,14 @@ func TestLoadServiceDescriptors(t *testing.T) {
3939
}
4040

4141
func TestLoadServiceDescriptor(t *testing.T) {
42-
sd, err := LoadServiceDescriptor(testprotos.TestService_ServiceDesc)
42+
sd, err := LoadServiceDescriptor(&testprotosgrpc.DummyService_ServiceDesc)
4343
testutil.Ok(t, err)
4444

4545
cases := []struct{ method, request, response string }{
46-
{"DoSomething", "testprotos.TestRequest", "jhump.protoreflect.desc.Bar"},
47-
{"DoSomethingElse", "testprotos.TestMessage", "testprotos.TestResponse"},
46+
{"DoSomething", "testprotos.DummyRequest", "jhump.protoreflect.desc.Bar"},
47+
{"DoSomethingElse", "testprotos.TestMessage", "testprotos.DummyResponse"},
4848
{"DoSomethingAgain", "jhump.protoreflect.desc.Bar", "testprotos.AnotherTestMessage"},
49-
{"DoSomethingForever", "testprotos.TestRequest", "testprotos.TestResponse"},
49+
{"DoSomethingForever", "testprotos.DummyRequest", "testprotos.DummyResponse"},
5050
}
5151

5252
testutil.Eq(t, len(cases), len(sd.GetMethods()))

internal/testprotos/desc_test_comments.pb.go

-160
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)