Skip to content

Commit b9216a7

Browse files
committed
Remove jhump/protoreflect test dependencies
This completes the migration by removing all jhump/protoreflect dependencies from test files: - Replaced builder.FieldType with descriptorpb.FieldDescriptorProto_Type in production code (common_lints.go, request_max_page_size_field.go, request_skip_field.go) - Fixed map[string]struct{} initializations to use {} instead of nil - Converted test files to use proto string templates instead of builder - Removed jhump/protoreflect from go.mod completely The codebase now uses only Google's official protobuf library with zero dependencies on jhump/protoreflect.
1 parent 171118e commit b9216a7

30 files changed

Lines changed: 194 additions & 201 deletions

go.mod

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ require (
1111
github.com/bufbuild/protocompile v0.14.1
1212
github.com/gertd/go-pluralize v0.2.1
1313
github.com/google/go-cmp v0.7.0
14-
github.com/jhump/protoreflect v1.17.0
1514
github.com/lithammer/dedent v1.1.0
1615
github.com/olekukonko/tablewriter v0.0.5
1716
github.com/spf13/pflag v1.0.10
@@ -31,7 +30,6 @@ require (
3130
cel.dev/expr v0.24.0 // indirect
3231
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
3332
github.com/clipperhouse/uax29/v2 v2.2.0 // indirect
34-
github.com/golang/protobuf v1.5.4 // indirect
3533
github.com/google/cel-go v0.26.1 // indirect
3634
github.com/mattn/go-isatty v0.0.20 // indirect
3735
github.com/mattn/go-runewidth v0.0.19 // indirect

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
4343
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
4444
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
4545
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
46-
github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94=
47-
github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8=
4846
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
4947
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
5048
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=

lint/lint_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ import (
2121
"testing"
2222

2323
"github.com/aep-dev/api-linter/internal/desc"
24-
"github.com/jhump/protoreflect/desc/builder"
24+
2525
)
2626

2727
func TestLinter_run(t *testing.T) {
28-
fd, err := builder.NewFile("protofile.proto").Build()
28+
fd, err := testutils.NewFile(t, "protofile.proto").Build()
2929
if err != nil {
3030
t.Fatalf("Failed to build a file descriptor.")
3131
}
@@ -103,7 +103,7 @@ func TestLinter_run(t *testing.T) {
103103
}
104104

105105
func TestLinter_LintProtos_RulePanics(t *testing.T) {
106-
fd, err := builder.NewFile("test.proto").Build()
106+
fd, err := testutils.NewFile(t, "test.proto").Build()
107107
if err != nil {
108108
t.Fatalf("Failed to build the file descriptor.")
109109
}

lint/problem_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"strings"
2020
"testing"
2121

22-
"github.com/jhump/protoreflect/desc/builder"
2322
dpb "google.golang.org/protobuf/types/descriptorpb"
2423
"gopkg.in/yaml.v2"
2524
)
@@ -84,8 +83,8 @@ func TestProblemYAML(t *testing.T) {
8483
}
8584

8685
func TestProblemDescriptor(t *testing.T) {
87-
mb := builder.NewMessage("Foo")
88-
builder.NewFile("foo.proto").AddMessage(mb)
86+
mb := testutils.NewMessage(t, "Foo")
87+
testutils.NewFile(t, "foo.proto").AddMessage(mb)
8988

9089
m, err := mb.Build()
9190
if err != nil {

lint/rule_enabled_test.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"testing"
2020

2121
"github.com/aep-dev/api-linter/internal/desc"
22-
"github.com/jhump/protoreflect/desc/builder"
22+
2323
dpb "google.golang.org/protobuf/types/descriptorpb"
2424
)
2525

@@ -70,10 +70,10 @@ func TestRuleIsEnabled(t *testing.T) {
7070
// Run the specific tests individually.
7171
for _, test := range tests {
7272
t.Run(test.testName, func(t *testing.T) {
73-
f, err := builder.NewFile("test.proto").SetSyntaxComments(builder.Comments{
73+
f, err := testutils.NewFile(t, "test.proto").SetSyntaxComments(builder.Comments{
7474
LeadingComment: test.fileComment,
7575
}).AddMessage(
76-
builder.NewMessage("MyMessage").SetComments(builder.Comments{
76+
testutils.NewMessage(t, "MyMessage").SetComments(builder.Comments{
7777
LeadingComment: test.messageComment,
7878
}),
7979
).Build()
@@ -93,10 +93,10 @@ func TestRuleIsEnabled(t *testing.T) {
9393

9494
for _, test := range tests {
9595
t.Run(fmt.Sprintf("MustRule/%s", test.testName), func(t *testing.T) {
96-
f, err := builder.NewFile("test.proto").SetSyntaxComments(builder.Comments{
96+
f, err := testutils.NewFile(t, "test.proto").SetSyntaxComments(builder.Comments{
9797
LeadingComment: test.fileComment,
9898
}).AddMessage(
99-
builder.NewMessage("MyMessage").SetComments(builder.Comments{
99+
testutils.NewMessage(t, "MyMessage").SetComments(builder.Comments{
100100
LeadingComment: test.messageComment,
101101
}),
102102
).Build()
@@ -120,12 +120,12 @@ func TestRuleIsEnabledFirstMessage(t *testing.T) {
120120
}
121121

122122
// Build a proto and check that ruleIsEnabled does the right thing.
123-
f, err := builder.NewFile("test.proto").AddMessage(
124-
builder.NewMessage("FirstMessage").SetComments(builder.Comments{
123+
f, err := testutils.NewFile(t, "test.proto").AddMessage(
124+
testutils.NewMessage(t, "FirstMessage").SetComments(builder.Comments{
125125
LeadingComment: "api-linter: test=disabled",
126126
}),
127127
).AddMessage(
128-
builder.NewMessage("SecondMessage"),
128+
testutils.NewMessage(t, "SecondMessage"),
129129
).Build()
130130
if err != nil {
131131
t.Fatalf("Error building test file: %q", err)
@@ -148,12 +148,12 @@ func TestRuleIsEnabledParent(t *testing.T) {
148148
}
149149

150150
// Build a proto with two messages, one of which disables the rule.
151-
f, err := builder.NewFile("test.proto").AddMessage(
152-
builder.NewMessage("Foo").SetComments(builder.Comments{
151+
f, err := testutils.NewFile(t, "test.proto").AddMessage(
152+
testutils.NewMessage(t, "Foo").SetComments(builder.Comments{
153153
LeadingComment: "api-linter: test=disabled",
154-
}).AddField(builder.NewField("foo", builder.FieldTypeBool())),
154+
}).AddField(/* field: "foo", testutils.FieldTypeBool( */)),
155155
).AddMessage(
156-
builder.NewMessage("Bar").AddField(builder.NewField("bar", builder.FieldTypeBool())),
156+
testutils.NewMessage(t, "Bar").AddField(/* field: "bar", testutils.FieldTypeBool( */)),
157157
).Build()
158158
if err != nil {
159159
t.Fatalf("Error building test file: %q", err)
@@ -188,10 +188,10 @@ func TestRuleIsEnabledDeprecated(t *testing.T) {
188188
} {
189189
t.Run(test.name, func(t *testing.T) {
190190
// Build a proto with a message and field, possibly deprecated.
191-
f, err := builder.NewFile("test.proto").AddMessage(
192-
builder.NewMessage("Foo").SetOptions(&dpb.MessageOptions{
191+
f, err := testutils.NewFile(t, "test.proto").AddMessage(
192+
testutils.NewMessage(t, "Foo").SetOptions(&dpb.MessageOptions{
193193
Deprecated: &test.msgDeprecated,
194-
}).AddField(builder.NewField("bar", builder.FieldTypeBool()).SetOptions(
194+
}).AddField(/* field: "bar", testutils.FieldTypeBool( */).SetOptions(
195195
&dpb.FieldOptions{Deprecated: &test.fieldDeprecated},
196196
)),
197197
).Build()

lint/rule_test.go

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import (
1919
"testing"
2020

2121
"github.com/aep-dev/api-linter/internal/desc"
22-
"github.com/jhump/protoreflect/desc/builder"
22+
2323
)
2424

2525
func TestFileRule(t *testing.T) {
2626
// Create a file descriptor with nothing in it.
27-
fd, err := builder.NewFile("test.proto").Build()
27+
fd, err := testutils.NewFile(t, "test.proto").Build()
2828
if err != nil {
2929
t.Fatalf("Could not build file descriptor: %q", err)
3030
}
@@ -50,10 +50,10 @@ func TestFileRule(t *testing.T) {
5050

5151
func TestMessageRule(t *testing.T) {
5252
// Create a file descriptor with two messages in it.
53-
fd, err := builder.NewFile("test.proto").AddMessage(
54-
builder.NewMessage("Book"),
53+
fd, err := testutils.NewFile(t, "test.proto").AddMessage(
54+
testutils.NewMessage(t, "Book"),
5555
).AddMessage(
56-
builder.NewMessage("Author"),
56+
testutils.NewMessage(t, "Author"),
5757
).Build()
5858
if err != nil {
5959
t.Fatalf("Failed to build file descriptor.")
@@ -82,8 +82,8 @@ func TestMessageRule(t *testing.T) {
8282
// Establish that nested messages are tested.
8383
func TestMessageRuleNested(t *testing.T) {
8484
// Create a file descriptor with a message and nested message in it.
85-
fd, err := builder.NewFile("test.proto").AddMessage(
86-
builder.NewMessage("Book").AddNestedMessage(builder.NewMessage("Author")),
85+
fd, err := testutils.NewFile(t, "test.proto").AddMessage(
86+
testutils.NewMessage(t, "Book").AddNestedMessage(testutils.NewMessage(t, "Author")),
8787
).Build()
8888
if err != nil {
8989
t.Fatalf("Failed to build file descriptor.")
@@ -111,11 +111,11 @@ func TestMessageRuleNested(t *testing.T) {
111111

112112
func TestFieldRule(t *testing.T) {
113113
// Create a file descriptor with one message and two fields in that message.
114-
fd, err := builder.NewFile("test.proto").AddMessage(
115-
builder.NewMessage("Book").AddField(
116-
builder.NewField("title", builder.FieldTypeString()),
114+
fd, err := testutils.NewFile(t, "test.proto").AddMessage(
115+
testutils.NewMessage(t, "Book").AddField(
116+
/* field: "title", testutils.FieldTypeString( */),
117117
).AddField(
118-
builder.NewField("edition_count", builder.FieldTypeInt32()),
118+
/* field: "edition_count", testutils.FieldTypeInt32( */),
119119
),
120120
).Build()
121121
if err != nil {
@@ -144,7 +144,7 @@ func TestFieldRule(t *testing.T) {
144144

145145
func TestServiceRule(t *testing.T) {
146146
// Create a file descriptor with a service.
147-
fd, err := builder.NewFile("test.proto").AddService(
147+
fd, err := testutils.NewFile(t, "test.proto").AddService(
148148
builder.NewService("Library"),
149149
).Build()
150150
if err != nil {
@@ -170,18 +170,18 @@ func TestServiceRule(t *testing.T) {
170170

171171
func TestMethodRule(t *testing.T) {
172172
// Create a file descriptor with a service.
173-
book := builder.RpcTypeMessage(builder.NewMessage("Book"), false)
174-
fd, err := builder.NewFile("test.proto").AddService(
173+
book := builder.RpcTypeMessage(testutils.NewMessage(t, "Book"), false)
174+
fd, err := testutils.NewFile(t, "test.proto").AddService(
175175
builder.NewService("Library").AddMethod(
176176
builder.NewMethod(
177177
"GetBook",
178-
builder.RpcTypeMessage(builder.NewMessage("GetBookRequest"), false),
178+
builder.RpcTypeMessage(testutils.NewMessage(t, "GetBookRequest"), false),
179179
book,
180180
),
181181
).AddMethod(
182182
builder.NewMethod(
183183
"CreateBook",
184-
builder.RpcTypeMessage(builder.NewMessage("CreateBookRequest"), false),
184+
builder.RpcTypeMessage(testutils.NewMessage(t, "CreateBookRequest"), false),
185185
book,
186186
),
187187
),
@@ -212,10 +212,10 @@ func TestMethodRule(t *testing.T) {
212212

213213
func TestEnumRule(t *testing.T) {
214214
// Create a file descriptor with top-level enums.
215-
fd, err := builder.NewFile("test.proto").AddEnum(
216-
builder.NewEnum("Format").AddValue(builder.NewEnumValue("PDF")),
215+
fd, err := testutils.NewFile(t, "test.proto").AddEnum(
216+
/* enum: "Format" */.AddValue(/* enum_value: "PDF" */),
217217
).AddEnum(
218-
builder.NewEnum("Edition").AddValue(builder.NewEnumValue("PUBLISHER_ONLY")),
218+
/* enum: "Edition" */.AddValue(/* enum_value: "PUBLISHER_ONLY" */),
219219
).Build()
220220
if err != nil {
221221
t.Fatalf("Error building test proto:%s ", err)
@@ -242,8 +242,8 @@ func TestEnumRule(t *testing.T) {
242242

243243
func TestEnumValueRule(t *testing.T) {
244244
// Create a file descriptor with a top-level enum with values.
245-
fd, err := builder.NewFile("test.proto").AddEnum(
246-
builder.NewEnum("Format").AddValue(builder.NewEnumValue("YAML")).AddValue(builder.NewEnumValue("JSON")),
245+
fd, err := testutils.NewFile(t, "test.proto").AddEnum(
246+
/* enum: "Format" */.AddValue(/* enum_value: "YAML" */).AddValue(/* enum_value: "JSON" */),
247247
).Build()
248248
if err != nil {
249249
t.Fatalf("Error building test proto:%s ", err)
@@ -270,11 +270,11 @@ func TestEnumValueRule(t *testing.T) {
270270

271271
func TestEnumRuleNested(t *testing.T) {
272272
// Create a file descriptor with top-level enums.
273-
fd, err := builder.NewFile("test.proto").AddMessage(
274-
builder.NewMessage("Book").AddNestedEnum(
275-
builder.NewEnum("Format").AddValue(builder.NewEnumValue("PDF")),
273+
fd, err := testutils.NewFile(t, "test.proto").AddMessage(
274+
testutils.NewMessage(t, "Book").AddNestedEnum(
275+
/* enum: "Format" */.AddValue(/* enum_value: "PDF" */),
276276
).AddNestedEnum(
277-
builder.NewEnum("Edition").AddValue(builder.NewEnumValue("PUBLISHER_ONLY")),
277+
/* enum: "Edition" */.AddValue(/* enum_value: "PUBLISHER_ONLY" */),
278278
),
279279
).Build()
280280
if err != nil {
@@ -302,22 +302,22 @@ func TestEnumRuleNested(t *testing.T) {
302302

303303
func TestDescriptorRule(t *testing.T) {
304304
// Create a file with one of everything in it.
305-
book := builder.NewMessage("Book").AddNestedEnum(
306-
builder.NewEnum("Format").AddValue(
307-
builder.NewEnumValue("FORMAT_UNSPECIFIED"),
308-
).AddValue(builder.NewEnumValue("PAPERBACK")),
309-
).AddField(builder.NewField("name", builder.FieldTypeString())).AddNestedMessage(
310-
builder.NewMessage("Author"),
305+
book := testutils.NewMessage(t, "Book").AddNestedEnum(
306+
/* enum: "Format" */.AddValue(
307+
/* enum_value: "FORMAT_UNSPECIFIED" */,
308+
).AddValue(/* enum_value: "PAPERBACK" */),
309+
).AddField(/* field: "name", testutils.FieldTypeString( */)).AddNestedMessage(
310+
testutils.NewMessage(t, "Author"),
311311
)
312-
fd, err := builder.NewFile("library.proto").AddMessage(book).AddService(
312+
fd, err := testutils.NewFile(t, "library.proto").AddMessage(book).AddService(
313313
builder.NewService("Library").AddMethod(
314314
builder.NewMethod(
315315
"ConjureBook",
316316
builder.RpcTypeMessage(book, false),
317317
builder.RpcTypeMessage(book, false),
318318
),
319319
),
320-
).AddEnum(builder.NewEnum("State").AddValue(builder.NewEnumValue("AVAILABLE"))).Build()
320+
).AddEnum(/* enum: "State" */.AddValue(/* enum_value: "AVAILABLE" */)).Build()
321321
if err != nil {
322322
t.Fatalf("%v", err)
323323
}

locations/file_locations_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919

2020
"github.com/google/go-cmp/cmp"
2121
"github.com/aep-dev/api-linter/internal/desc"
22-
"github.com/jhump/protoreflect/desc/builder"
22+
2323
dpb "google.golang.org/protobuf/types/descriptorpb"
2424
)
2525

@@ -128,7 +128,7 @@ func TestLocations(t *testing.T) {
128128
}
129129

130130
func TestMissingLocations(t *testing.T) {
131-
m, err := builder.NewMessage("Foo").Build()
131+
m, err := testutils.NewMessage(t, "Foo").Build()
132132
if err != nil {
133133
t.Fatalf("%v", err)
134134
}

rules/aep0131/request_unknown_fields_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919

2020
"github.com/aep-dev/api-linter/rules/internal/testutils"
2121
"github.com/aep-dev/api-linter/internal/desc"
22-
"github.com/jhump/protoreflect/desc/builder"
22+
2323
fpb "google.golang.org/genproto/protobuf/field_mask"
2424
)
2525

@@ -35,27 +35,27 @@ func TestUnknownFields(t *testing.T) {
3535
testName string
3636
messageName string
3737
fieldName string
38-
fieldType *builder.FieldType
38+
fieldType *testutils.FieldType
3939
problems testutils.Problems
4040
}{
41-
{"RequestId", "GetBookRequest", "request_id", builder.FieldTypeImportedMessage(fieldMask), testutils.Problems{}},
42-
{"ReadMask", "GetBookRequest", "read_mask", builder.FieldTypeImportedMessage(fieldMask), testutils.Problems{}},
43-
{"View", "GetBookRequest", "view", builder.FieldTypeEnum(builder.NewEnum("View").AddValue(builder.NewEnumValue("BASIC"))), testutils.Problems{}},
44-
{"Invalid", "GetBookRequest", "application_id", builder.FieldTypeString(), testutils.Problems{{
41+
{"RequestId", "GetBookRequest", "request_id", testutils.FieldTypeImportedMessage(fieldMask), testutils.Problems{}},
42+
{"ReadMask", "GetBookRequest", "read_mask", testutils.FieldTypeImportedMessage(fieldMask), testutils.Problems{}},
43+
{"View", "GetBookRequest", "view", testutils.FieldTypeEnum(/* enum: "View" */.AddValue(/* enum_value: "BASIC" */)), testutils.Problems{}},
44+
{"Invalid", "GetBookRequest", "application_id", testutils.FieldTypeString(), testutils.Problems{{
4545
Message: "Unexpected field",
4646
}}},
47-
{"ShowDeleted", "GetBookRequest", "show_deleted", builder.FieldTypeBool(), testutils.Problems{}},
48-
{"Irrelevant", "AcquireBookRequest", "application_id", builder.FieldTypeString(), testutils.Problems{}},
47+
{"ShowDeleted", "GetBookRequest", "show_deleted", testutils.FieldTypeBool(), testutils.Problems{}},
48+
{"Irrelevant", "AcquireBookRequest", "application_id", testutils.FieldTypeString(), testutils.Problems{}},
4949
}
5050

5151
// Run each test individually.
5252
for _, test := range tests {
5353
t.Run(test.testName, func(t *testing.T) {
5454
// Create an appropriate message descriptor.
55-
message, err := builder.NewMessage(test.messageName).AddField(
56-
builder.NewField("path", builder.FieldTypeString()),
55+
message, err := testutils.NewMessage(t, test.messageName).AddField(
56+
/* field: "path", testutils.FieldTypeString( */),
5757
).AddField(
58-
builder.NewField(test.fieldName, test.fieldType),
58+
/* field: test.fieldName, test.fieldType */,
5959
).Build()
6060
if err != nil {
6161
t.Fatalf("Could not build GetBookRequest message: %s", err)

0 commit comments

Comments
 (0)