Skip to content

Commit 853af99

Browse files
committed
ci(test): fix helm testing and golint
Signed-off-by: Oliver Bähler <[email protected]>
1 parent cf01b6c commit 853af99

File tree

19 files changed

+80
-40
lines changed

19 files changed

+80
-40
lines changed

.golangci.yml

+42-28
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,56 @@
11
linters-settings:
2-
gci:
3-
sections:
4-
- standard
5-
- default
6-
- prefix(github.com/projectcapsule/capsule-proxy)
72
dupl:
83
threshold: 100
94
goconst:
105
min-len: 2
116
min-occurrences: 2
127
cyclop:
13-
max-complexity: 17
14-
issues:
15-
exclude-rules:
16-
- path: (.+)_test.go
17-
linters:
18-
- revive
19-
text: "^(dot-imports)"
8+
max-complexity: 27
9+
gocognit:
10+
min-complexity: 50
11+
gci:
12+
sections:
13+
- standard
14+
- default
15+
- prefix(github.com/projectcapsule/capsule-proxy)
16+
gofumpt:
17+
module-path: github.com/projectcapsule/capsule-proxy
18+
extra-rules: false
19+
inamedparam:
20+
# Skips check for interface methods with only a single parameter.
21+
# Default: false
22+
skip-single-param: true
23+
nakedret:
24+
# Make an issue if func has more lines of code than this setting, and it has naked returns.
25+
max-func-lines: 50
2026
linters:
2127
enable-all: true
2228
disable:
23-
- errchkjson
24-
- errname
25-
- forcetypeassert
29+
- err113
30+
- depguard
31+
- perfsprint
32+
- funlen
33+
- gochecknoinits
34+
- lll
35+
- gochecknoglobals
36+
- mnd
37+
- nilnil
38+
- recvcheck
39+
- unparam
40+
- paralleltest
2641
- ireturn
42+
- testpackage
2743
- varnamelen
2844
- wrapcheck
29-
- gomnd
30-
- lll
31-
- nonamedreturns
32-
- tparallel
33-
- nilerr
3445
- exhaustruct
35-
- depguard
36-
- revive
37-
- nilnil
38-
- wsl
39-
- perfsprint
40-
- exportloopref
41-
- execinquery
42-
- forcetypeassert
46+
- nonamedreturns
47+
issues:
48+
exclude-files:
49+
- "zz_.*\\.go$"
50+
- ".+\\.generated.go"
51+
- ".+_test.go"
52+
- ".+_test_.+.go"
53+
run:
54+
timeout: 3m
55+
allow-parallel-runners: true
56+
tests: false

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ rbac-fix:
249249
# Run tests
250250
.PHONY: test
251251
test: test-clean generate manifests test-clean
252-
@GO111MODULE=on go test -v ./... -coverprofile coverage.out
252+
@GO111MODULE=on go test -v $(go list ./... | grep -v /e2e/) -coverprofile coverage.out
253253

254254
.PHONY: test-clean
255255
test-clean: ## Clean tests cache

internal/controllers/role_bindings.go

+13-4
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,12 @@ func (r *RoleBindingReflector) GetUserNamespacesFromRequest(req request.Request)
7575
}
7676

7777
for _, rb := range userRoleBindings {
78-
rb := rb.(*rbacv1.RoleBinding)
79-
namespaces.Insert(rb.GetNamespace())
78+
rbt, ok := rb.(*rbacv1.RoleBinding)
79+
if !ok {
80+
return nil, fmt.Errorf("expected *rbacv1.RoleBinding but got %T", rb)
81+
}
82+
83+
namespaces.Insert(rbt.GetNamespace())
8084
}
8185

8286
for _, group := range groups {
@@ -86,8 +90,12 @@ func (r *RoleBindingReflector) GetUserNamespacesFromRequest(req request.Request)
8690
}
8791

8892
for _, rb := range groupRoleBindings {
89-
rb := rb.(*rbacv1.RoleBinding)
90-
namespaces.Insert(rb.GetNamespace())
93+
rbt, ok := rb.(*rbacv1.RoleBinding)
94+
if !ok {
95+
return nil, fmt.Errorf("expected *rbacv1.RoleBinding but got %T", rb)
96+
}
97+
98+
namespaces.Insert(rbt.GetNamespace())
9199
}
92100
}
93101

@@ -101,6 +109,7 @@ func (r *RoleBindingReflector) Start(ctx context.Context) error {
101109
}
102110

103111
func OwnerRoleBindingsIndexFunc(obj interface{}) (result []string, err error) {
112+
//nolint:forcetypeassert
104113
rb := obj.(*rbacv1.RoleBinding)
105114

106115
for _, subject := range rb.Subjects {

internal/controllers/watchdog/crds_watcher.go

+1
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ func (c *CRDWatcher) SetupWithManager(ctx context.Context, mgr manager.Manager)
163163
return ctrl.NewControllerManagedBy(mgr).
164164
WatchesRawSource(source.Channel(c.requeue, &handler.EnqueueRequestForObject{})).
165165
For(&apiextensionsv1.CustomResourceDefinition{}, builder.WithPredicates(predicate.NewPredicateFuncs(func(object client.Object) bool {
166+
//nolint:forcetypeassert
166167
crd := object.(*apiextensionsv1.CustomResourceDefinition)
167168

168169
return crd.Spec.Scope == apiextensionsv1.NamespaceScoped

internal/controllers/watchdog/namespaced_watcher.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,11 @@ func (c *NamespacedWatcher) SetupWithManager(mgr manager.Manager, gvk metav1.Gro
117117

118118
return false
119119
},
120-
DeleteFunc: func(e event.DeleteEvent) bool {
120+
DeleteFunc: func(_ event.DeleteEvent) bool {
121121
// Ignore delete events
122122
return false
123123
},
124-
GenericFunc: func(e event.GenericEvent) bool {
124+
GenericFunc: func(_ event.GenericEvent) bool {
125125
// Ignore generic events
126126
return false
127127
},

internal/indexer/global_proxy_setting.go

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ func (p GlobalProxySetting) Field() string {
2929

3030
func (p GlobalProxySetting) Func() client.IndexerFunc {
3131
return func(object client.Object) (owners []string) {
32+
//nolint:forcetypeassert
3233
proxySetting := object.(*v1beta1.GlobalProxySettings)
3334

3435
for _, owner := range proxySetting.Spec.Rules {

internal/indexer/proxy_setting.go

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ func (p ProxySetting) Field() string {
2929

3030
func (p ProxySetting) Func() client.IndexerFunc {
3131
return func(object client.Object) (owners []string) {
32+
//nolint:forcetypeassert
3233
proxySetting := object.(*v1beta1.ProxySetting)
3334

3435
for _, owner := range proxySetting.Spec.Subjects {

internal/modules/errors/bad_request.go

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"k8s.io/apimachinery/pkg/runtime/schema"
1111
)
1212

13+
//nolint:errname
1314
type badRequest struct {
1415
message string
1516
details *metav1.StatusDetails

internal/modules/ingressclass/utils.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func getIngressClasses(request *http.Request, proxyTenants []*tenant.ProxyTenant
6262
requirements = append(requirements, reqs...)
6363
}
6464

65-
sort.SliceStable(exact, func(i, j int) bool {
65+
sort.SliceStable(exact, func(i, _ int) bool {
6666
return exact[i] < exact[0]
6767
})
6868

internal/modules/lease/get.go

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ func (g get) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Req
6767
name := mux.Vars(httpRequest)["name"]
6868

6969
node := &corev1.Node{}
70+
//nolint:nilerr
7071
if err = g.client.Get(httpRequest.Context(), types.NamespacedName{Name: name}, node); err != nil {
7172
// offload failure to Kubernetes API due to missing RBAC
7273
return nil, nil

internal/modules/pod/get.go

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ func (g get) Handle(proxyTenants []*tenant.ProxyTenant, proxyRequest request.Req
6767

6868
var fieldSelector labels.Selector
6969

70+
//nolint:nilerr
7071
if fieldSelector, err = labels.Parse(rawFieldSelector[0]); err != nil {
7172
// not valid labels, offloading Kubernetes to deal with the failure
7273
return nil, nil

internal/modules/priorityclass/utils.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func getPriorityClass(req *http.Request, proxyTenants []*tenant.ProxyTenant) (al
5959
requirements = append(requirements, reqs...)
6060
}
6161

62-
sort.SliceStable(exact, func(i, j int) bool {
62+
sort.SliceStable(exact, func(i, _ int) bool {
6363
return exact[i] < exact[0]
6464
})
6565

internal/modules/storageclass/utils.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func getStorageClasses(req *http.Request, proxyTenants []*tenant.ProxyTenant) (a
5959
requirements = append(requirements, reqs...)
6060
}
6161

62-
sort.SliceStable(exact, func(i, j int) bool {
62+
sort.SliceStable(exact, func(i, _ int) bool {
6363
return exact[i] < exact[0]
6464
})
6565

internal/request/error.go

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package request
55

6+
//nolint:errname
67
type ErrUnauthorized struct {
78
message string
89
}

internal/webserver/errors/panic.go

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ func HandleUnauthorized(w http.ResponseWriter, err error, message string) {
2626

2727
w.Header().Set("content-type", "application/json")
2828

29+
//nolint:errchkjson
2930
b, _ := json.Marshal(status)
3031
_, _ = w.Write(b)
3132

@@ -45,6 +46,7 @@ func HandleError(w http.ResponseWriter, err error, message string) {
4546

4647
w.Header().Set("content-type", "application/json")
4748

49+
//nolint:errchkjson
4850
b, _ := json.Marshal(status)
4951
_, _ = w.Write(b)
5052

internal/webserver/middleware/jwt.go

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ func CheckJWTMiddleware(client client.Writer) mux.MiddlewareFunc {
4040
if err = client.Create(request.Context(), &tr); err != nil {
4141
errors.HandleError(writer, err, "cannot create TokenReview")
4242
}
43+
4344
if statusErr := tr.Status.Error; len(statusErr) > 0 {
4445
invalidatedToken.Insert(token)
4546

internal/webserver/middleware/user_in_group.go

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ func CheckUserInCapsuleGroupMiddleware(client client.Writer, log logr.Logger, cl
4747
if err != nil {
4848
log.Error(err, "Cannot retrieve username and group from request")
4949
}
50+
5051
log.V(10).Info("request groups", "groups", groups)
5152

5253
for _, group := range groups {

internal/webserver/webserver.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -300,26 +300,32 @@ func (n *kubeFilter) registerModules(ctx context.Context, root *mux.Router) {
300300
)
301301
sr.HandleFunc("", func(writer http.ResponseWriter, request *http.Request) {
302302
proxyRequest := req.NewHTTP(request, n.authTypes, n.usernameClaimField, n.writer, n.ignoredImpersonationGroups, n.impersonationGroupsRegexp, n.skipImpersonationReview)
303+
303304
username, groups, err := proxyRequest.GetUserAndGroups()
304305
if err != nil {
305306
server.HandleError(writer, err, "cannot retrieve user and group from the request")
306307
}
308+
307309
proxyTenants, err := n.getTenantsForOwner(ctx, username, groups)
308310
if err != nil {
309311
server.HandleError(writer, err, "cannot list Tenant resources")
310312
}
311313

312314
var selector labels.Selector
313315
selector, err = mod.Handle(proxyTenants, proxyRequest)
316+
314317
switch {
315318
case err != nil:
316319
var t moderrors.Error
317320
if errors.As(err, &t) {
318321
writer.Header().Set("Content-Type", "application/json")
322+
319323
b, _ := json.Marshal(t.Status())
320324
_, _ = writer.Write(b)
325+
321326
panic(err.Error())
322327
}
328+
323329
server.HandleError(writer, err, err.Error())
324330
case selector == nil:
325331
// if there's no selector, let it pass to the
@@ -336,7 +342,7 @@ func (n *kubeFilter) Start(ctx context.Context) error {
336342
r := mux.NewRouter()
337343
r.Use(handlers.RecoveryHandler())
338344

339-
r.Path("/_healthz").Subrouter().HandleFunc("", func(writer http.ResponseWriter, request *http.Request) {
345+
r.Path("/_healthz").Subrouter().HandleFunc("", func(writer http.ResponseWriter, _ *http.Request) {
340346
writer.WriteHeader(http.StatusOK)
341347
_, _ = writer.Write([]byte("ok"))
342348
})

main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const (
4646
WebhookLabler
4747
)
4848

49-
//nolint:funlen,gocyclo,cyclop,maintidx,gocognit
49+
//nolint:funlen,gocyclo,cyclop,maintidx
5050
func main() {
5151
scheme := runtime.NewScheme()
5252
log := ctrl.Log.WithName("main")

0 commit comments

Comments
 (0)