Skip to content

Commit 0fc4d7e

Browse files
committed
Enable lll linter and make changes (nginx#287)
Sets line-length limit to 120 characters and makes necessary changes
1 parent f82a192 commit 0fc4d7e

28 files changed

+1331
-875
lines changed

.golangci.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ linters-settings:
3535
govet:
3636
enable:
3737
- fieldalignment
38-
38+
lll:
39+
line-length: 120
3940
linters:
4041
enable:
4142
- asciicheck
@@ -49,6 +50,7 @@ linters:
4950
- gosimple
5051
- govet
5152
- ineffassign
53+
- lll
5254
- makezero
5355
- misspell
5456
- nilerr

cmd/gateway/main.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ import (
1212
)
1313

1414
const (
15-
domain string = "k8s-gateway.nginx.org"
15+
domain = "k8s-gateway.nginx.org"
16+
gatewayClassNameUsage = `The name of the GatewayClass resource. ` +
17+
`Every NGINX Gateway must have a unique corresponding GatewayClass resource.`
18+
gatewayCtrlNameUsageFmt = `The name of the Gateway controller. ` +
19+
`The controller name must be of the form: DOMAIN/PATH. The controller's domain is '%s'`
1620
)
1721

1822
var (
@@ -25,14 +29,10 @@ var (
2529
gatewayCtlrName = flag.String(
2630
"gateway-ctlr-name",
2731
"",
28-
fmt.Sprintf("The name of the Gateway controller. The controller name must be of the form: DOMAIN/PATH. The controller's domain is '%s'", domain),
32+
fmt.Sprintf(gatewayCtrlNameUsageFmt, domain),
2933
)
3034

31-
gatewayClassName = flag.String(
32-
"gatewayclass",
33-
"",
34-
"The name of the GatewayClass resource. Every NGINX Gateway must have a unique corresponding GatewayClass resource",
35-
)
35+
gatewayClassName = flag.String("gatewayclass", "", gatewayClassNameUsage)
3636
)
3737

3838
func main() {

cmd/gateway/setup.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ import (
1515
)
1616

1717
const (
18-
errTmpl = "failed validation - flag: '--%s' reason: '%s'\n"
19-
controllerNameRegex = `^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$`
18+
errTmpl = "failed validation - flag: '--%s' reason: '%s'\n"
19+
// nolint:lll
20+
// Regex from: https://github.com/kubernetes-sigs/gateway-api/blob/547122f7f55ac0464685552898c560658fb40073/apis/v1alpha2/shared_types.go#L462
21+
controllerNameRegex = `^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$` //nolint:lll
2022
)
2123

2224
type (
@@ -57,7 +59,6 @@ func GatewayControllerParam(domain string) ValidatorContext {
5759
}
5860

5961
func validateControllerName(name string) error {
60-
// Regex from: https://github.com/kubernetes-sigs/gateway-api/blob/547122f7f55ac0464685552898c560658fb40073/apis/v1alpha2/shared_types.go#L462
6162
re := regexp.MustCompile(controllerNameRegex)
6263
if !re.MatchString(name) {
6364
return fmt.Errorf("invalid gateway controller name: %s; expected format is DOMAIN/PATH", name)

internal/events/first_eventbatch_preparer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ type FirstEventBatchPreparerImpl struct {
4747
// The object must specify its namespace (if any) and name.
4848
// For each list from objectLists, FirstEventBatchPreparerImpl will list the resources of the corresponding type from
4949
// the reader.
50-
func NewFirstEventBatchPreparerImpl(reader Reader, objects []client.Object, objectLists []client.ObjectList) *FirstEventBatchPreparerImpl {
50+
func NewFirstEventBatchPreparerImpl(
51+
reader Reader,
52+
objects []client.Object,
53+
objectLists []client.ObjectList,
54+
) *FirstEventBatchPreparerImpl {
5155
return &FirstEventBatchPreparerImpl{
5256
reader: reader,
5357
objects: objects,

internal/events/first_eventbatch_preparer_test.go

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,14 @@ var _ = Describe("FirstEventBatchPreparer", func() {
4545
})
4646

4747
It("should prepare zero events when resources don't exist", func() {
48-
fakeReader.GetCalls(func(ctx context.Context, name types.NamespacedName, object client.Object, opts ...client.GetOption) error {
49-
Expect(name).Should(Equal(types.NamespacedName{Name: gcName}))
50-
Expect(object).Should(BeAssignableToTypeOf(&v1beta1.GatewayClass{}))
51-
52-
return apierrors.NewNotFound(schema.GroupResource{}, "test")
53-
})
48+
fakeReader.GetCalls(
49+
func(ctx context.Context, name types.NamespacedName, object client.Object, opts ...client.GetOption) error {
50+
Expect(name).Should(Equal(types.NamespacedName{Name: gcName}))
51+
Expect(object).Should(BeAssignableToTypeOf(&v1beta1.GatewayClass{}))
52+
53+
return apierrors.NewNotFound(schema.GroupResource{}, "test")
54+
},
55+
)
5456
fakeReader.ListReturns(nil)
5557

5658
batch, err := preparer.Prepare(context.Background())
@@ -62,13 +64,15 @@ var _ = Describe("FirstEventBatchPreparer", func() {
6264
It("should prepare one event for each resource type", func() {
6365
gatewayClass := v1beta1.GatewayClass{ObjectMeta: metav1.ObjectMeta{Name: gcName}}
6466

65-
fakeReader.GetCalls(func(ctx context.Context, name types.NamespacedName, object client.Object, opts ...client.GetOption) error {
66-
Expect(name).Should(Equal(types.NamespacedName{Name: gcName}))
67-
Expect(object).Should(BeAssignableToTypeOf(&v1beta1.GatewayClass{}))
67+
fakeReader.GetCalls(
68+
func(ctx context.Context, name types.NamespacedName, object client.Object, opts ...client.GetOption) error {
69+
Expect(name).Should(Equal(types.NamespacedName{Name: gcName}))
70+
Expect(object).Should(BeAssignableToTypeOf(&v1beta1.GatewayClass{}))
6871

69-
reflect.Indirect(reflect.ValueOf(object)).Set(reflect.Indirect(reflect.ValueOf(&gatewayClass)))
70-
return nil
71-
})
72+
reflect.Indirect(reflect.ValueOf(object)).Set(reflect.Indirect(reflect.ValueOf(&gatewayClass)))
73+
return nil
74+
},
75+
)
7276

7377
httpRoute := v1beta1.HTTPRoute{ObjectMeta: metav1.ObjectMeta{Name: "test"}}
7478

@@ -101,13 +105,15 @@ var _ = Describe("FirstEventBatchPreparer", func() {
101105
Describe("EachListItem cases", func() {
102106
BeforeEach(func() {
103107
fakeReader.GetReturns(apierrors.NewNotFound(schema.GroupResource{}, "test"))
104-
fakeReader.ListCalls(func(ctx context.Context, list client.ObjectList, option ...client.ListOption) error {
105-
httpRoute := v1beta1.HTTPRoute{ObjectMeta: metav1.ObjectMeta{Name: "test"}}
106-
typedList := list.(*v1beta1.HTTPRouteList)
107-
typedList.Items = append(typedList.Items, httpRoute)
108-
109-
return nil
110-
})
108+
fakeReader.ListCalls(
109+
func(ctx context.Context, list client.ObjectList, option ...client.ListOption) error {
110+
httpRoute := v1beta1.HTTPRoute{ObjectMeta: metav1.ObjectMeta{Name: "test"}}
111+
typedList := list.(*v1beta1.HTTPRouteList)
112+
typedList.Items = append(typedList.Items, httpRoute)
113+
114+
return nil
115+
},
116+
)
111117
})
112118

113119
It("should return error if EachListItem passes a wrong object type", func() {

internal/events/handler_test.go

Lines changed: 69 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ var _ = Describe("EventHandler", func() {
8888
})
8989

9090
Describe("Process the Gateway API resources events", func() {
91-
DescribeTable("A batch with one event",
91+
DescribeTable(
92+
"A batch with one event",
9293
func(e interface{}) {
9394
fakeConf := state.Configuration{}
9495
fakeStatuses := state.Statuses{}
@@ -119,17 +120,59 @@ var _ = Describe("EventHandler", func() {
119120
// Check that a reconfig happened
120121
expectReconfig(fakeConf, fakeCfg, fakeStatuses)
121122
},
122-
Entry("HTTPRoute upsert", &events.UpsertEvent{Resource: &v1beta1.HTTPRoute{}}),
123-
Entry("Gateway upsert", &events.UpsertEvent{Resource: &v1beta1.Gateway{}}),
124-
Entry("GatewayClass upsert", &events.UpsertEvent{Resource: &v1beta1.GatewayClass{}}),
125-
Entry("Service upsert", &events.UpsertEvent{Resource: &apiv1.Service{}}),
126-
Entry("EndpointSlice upsert", &events.UpsertEvent{Resource: &discoveryV1.EndpointSlice{}}),
127-
128-
Entry("HTTPRoute delete", &events.DeleteEvent{Type: &v1beta1.HTTPRoute{}, NamespacedName: types.NamespacedName{Namespace: "test", Name: "route"}}),
129-
Entry("Gateway delete", &events.DeleteEvent{Type: &v1beta1.Gateway{}, NamespacedName: types.NamespacedName{Namespace: "test", Name: "gateway"}}),
130-
Entry("GatewayClass delete", &events.DeleteEvent{Type: &v1beta1.GatewayClass{}, NamespacedName: types.NamespacedName{Name: "class"}}),
131-
Entry("Service delete", &events.DeleteEvent{Type: &apiv1.Service{}, NamespacedName: types.NamespacedName{Namespace: "test", Name: "service"}}),
132-
Entry("EndpointSlice deleted", &events.DeleteEvent{Type: &discoveryV1.EndpointSlice{}, NamespacedName: types.NamespacedName{Namespace: "test", Name: "endpointslice"}}),
123+
Entry(
124+
"HTTPRoute upsert",
125+
&events.UpsertEvent{Resource: &v1beta1.HTTPRoute{}},
126+
),
127+
Entry(
128+
"Gateway upsert",
129+
&events.UpsertEvent{Resource: &v1beta1.Gateway{}},
130+
),
131+
Entry(
132+
"GatewayClass upsert",
133+
&events.UpsertEvent{Resource: &v1beta1.GatewayClass{}},
134+
),
135+
Entry(
136+
"Service upsert",
137+
&events.UpsertEvent{Resource: &apiv1.Service{}},
138+
),
139+
Entry(
140+
"EndpointSlice upsert",
141+
&events.UpsertEvent{Resource: &discoveryV1.EndpointSlice{}},
142+
),
143+
144+
Entry(
145+
"HTTPRoute delete",
146+
&events.DeleteEvent{
147+
Type: &v1beta1.HTTPRoute{},
148+
NamespacedName: types.NamespacedName{Namespace: "test", Name: "route"},
149+
},
150+
),
151+
Entry(
152+
"Gateway delete",
153+
&events.DeleteEvent{
154+
Type: &v1beta1.Gateway{},
155+
NamespacedName: types.NamespacedName{Namespace: "test", Name: "gateway"},
156+
},
157+
),
158+
Entry(
159+
"GatewayClass delete",
160+
&events.DeleteEvent{Type: &v1beta1.GatewayClass{}, NamespacedName: types.NamespacedName{Name: "class"}},
161+
),
162+
Entry(
163+
"Service delete",
164+
&events.DeleteEvent{
165+
Type: &apiv1.Service{},
166+
NamespacedName: types.NamespacedName{Namespace: "test", Name: "service"},
167+
},
168+
),
169+
Entry(
170+
"EndpointSlice deleted",
171+
&events.DeleteEvent{
172+
Type: &discoveryV1.EndpointSlice{},
173+
NamespacedName: types.NamespacedName{Namespace: "test", Name: "endpointslice"},
174+
},
175+
),
133176
)
134177
})
135178

@@ -192,11 +235,20 @@ var _ = Describe("EventHandler", func() {
192235
&events.UpsertEvent{Resource: secret},
193236
}
194237
deletes := []interface{}{
195-
&events.DeleteEvent{Type: &v1beta1.HTTPRoute{}, NamespacedName: types.NamespacedName{Namespace: "test", Name: "route"}},
196-
&events.DeleteEvent{Type: &v1beta1.Gateway{}, NamespacedName: types.NamespacedName{Namespace: "test", Name: "gateway"}},
238+
&events.DeleteEvent{
239+
Type: &v1beta1.HTTPRoute{},
240+
NamespacedName: types.NamespacedName{Namespace: "test", Name: "route"},
241+
},
242+
&events.DeleteEvent{
243+
Type: &v1beta1.Gateway{},
244+
NamespacedName: types.NamespacedName{Namespace: "test", Name: "gateway"},
245+
},
197246
&events.DeleteEvent{Type: &v1beta1.GatewayClass{}, NamespacedName: types.NamespacedName{Name: "class"}},
198247
&events.DeleteEvent{Type: &apiv1.Service{}, NamespacedName: svcNsName},
199-
&events.DeleteEvent{Type: &discoveryV1.EndpointSlice{}, NamespacedName: types.NamespacedName{Namespace: "test", Name: "endpointslice"}},
248+
&events.DeleteEvent{
249+
Type: &discoveryV1.EndpointSlice{},
250+
NamespacedName: types.NamespacedName{Namespace: "test", Name: "endpointslice"},
251+
},
200252
&events.DeleteEvent{Type: &apiv1.Secret{}, NamespacedName: secretNsName},
201253
}
202254

@@ -219,7 +271,8 @@ var _ = Describe("EventHandler", func() {
219271
// 5, not 6, because secret upsert events do not result into CaptureUpsertChange() call
220272
Expect(fakeProcessor.CaptureUpsertChangeCallCount()).Should(Equal(5))
221273
for i := 0; i < 5; i++ {
222-
Expect(fakeProcessor.CaptureUpsertChangeArgsForCall(i)).Should(Equal(upserts[i].(*events.UpsertEvent).Resource))
274+
Expect(fakeProcessor.CaptureUpsertChangeArgsForCall(i)).
275+
Should(Equal(upserts[i].(*events.UpsertEvent).Resource))
223276
}
224277

225278
// 5, not 6, because secret delete events do not result into CaptureDeleteChange() call

internal/helpers/helpers.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// Package helpers contains helper functions for unit tests.
12
package helpers
23

34
import (
@@ -17,42 +18,42 @@ func Diff(x, y interface{}) string {
1718
return r
1819
}
1920

20-
// GetStringPointer takes a string and returns a pointer to it. Useful in unit tests when initializing structs.
21+
// GetStringPointer takes a string and returns a pointer to it.
2122
func GetStringPointer(s string) *string {
2223
return &s
2324
}
2425

25-
// GetIntPointer takes an int and returns a pointer to it. Useful in unit tests when initializing structs.
26+
// GetIntPointer takes an int and returns a pointer to it.
2627
func GetIntPointer(i int) *int {
2728
return &i
2829
}
2930

30-
// GetInt32Pointer takes an int32 and returns a pointer to it. Useful in unit tests when initializing structs.
31+
// GetInt32Pointer takes an int32 and returns a pointer to it.
3132
func GetInt32Pointer(i int32) *int32 {
3233
return &i
3334
}
3435

35-
// GetHTTPMethodPointer takes an HTTPMethod and returns a pointer to it. Useful in unit tests when initializing structs.
36+
// GetHTTPMethodPointer takes an HTTPMethod and returns a pointer to it.
3637
func GetHTTPMethodPointer(m v1beta1.HTTPMethod) *v1beta1.HTTPMethod {
3738
return &m
3839
}
3940

40-
// GetHeaderMatchTypePointer takes an HeaderMatchType and returns a pointer to it. Useful in unit tests when initializing structs.
41+
// GetHeaderMatchTypePointer takes an HeaderMatchType and returns a pointer to it.
4142
func GetHeaderMatchTypePointer(t v1beta1.HeaderMatchType) *v1beta1.HeaderMatchType {
4243
return &t
4344
}
4445

45-
// GetQueryParamMatchTypePointer takes an QueryParamMatchType and returns a pointer to it. Useful in unit tests when initializing structs.
46+
// GetQueryParamMatchTypePointer takes an QueryParamMatchType and returns a pointer to it.
4647
func GetQueryParamMatchTypePointer(t v1beta1.QueryParamMatchType) *v1beta1.QueryParamMatchType {
4748
return &t
4849
}
4950

50-
// GetTLSModePointer takes a TLSModeType and returns a pointer to it. Useful in unit tests when initializing structs.
51+
// GetTLSModePointer takes a TLSModeType and returns a pointer to it.
5152
func GetTLSModePointer(t v1beta1.TLSModeType) *v1beta1.TLSModeType {
5253
return &t
5354
}
5455

55-
// GetBoolPointer takes a bool and returns a pointer to it. Useful in unit tests when initializing structs.
56+
// GetBoolPointer takes a bool and returns a pointer to it.
5657
func GetBoolPointer(b bool) *bool {
5758
return &b
5859
}

0 commit comments

Comments
 (0)