Skip to content

Commit 5da4857

Browse files
authored
chore: lint tests (#161)
1 parent 4e70ef2 commit 5da4857

File tree

10 files changed

+87
-50
lines changed

10 files changed

+87
-50
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
go-version: [ "1.23", "1.24" ]
1414
runs-on: ubuntu-latest
1515
env:
16-
GOLANGCI_LINT_VERSION: v2.0.2
16+
GOLANGCI_LINT_VERSION: v2.1.5
1717

1818
steps:
1919
- name: Checkout code

.golangci.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
version: "2"
2-
run:
3-
tests: false
42

53
formatters:
64
enable:
@@ -35,14 +33,22 @@ linters:
3533
- inamedparam
3634
- ireturn
3735
- mnd
36+
- nonamedreturns
3837
- nlreturn
38+
- paralleltest
39+
- testpackage
3940
- varnamelen
4041
- wrapcheck
4142
- wsl
4243
settings:
4344
cyclop:
44-
max-complexity: 12
45+
max-complexity: 15
4546
funlen:
46-
lines: 80
47+
lines: 160
4748
exclusions:
4849
generated: lax
50+
rules:
51+
- linters:
52+
- gosec
53+
- lll
54+
path: _test\.go

errors/errors_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
package errors_test
22

33
import (
4-
"errors"
54
"testing"
65

76
errorsx "github.com/hamba/pkg/v2/errors"
87
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/require"
99
)
1010

11-
const testErr = errorsx.Error("test error")
11+
const errTest = errorsx.Error("test error")
1212

1313
func TestError(t *testing.T) {
14-
err := testErr
14+
err := errTest
1515

16-
assert.EqualError(t, err, "test error")
17-
assert.True(t, errors.Is(err, testErr))
16+
require.EqualError(t, err, "test error")
17+
assert.ErrorIs(t, err, errTest)
1818
}

errors/reason/reason_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func TestExtract(t *testing.T) {
1919

2020
reasons, errs := reason.Extract(errs)
2121

22-
require.NotEmpty(t, errs)
22+
require.Error(t, errs)
2323
assert.Equal(t, "test1\ntest2", errs.Error())
2424
assert.Equal(t, []string{"First Error", "Second Error"}, reasons)
2525
}

http/healthz/healthz_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestHandler(t *testing.T) {
2424
h.ServeHTTP(rec, req)
2525

2626
assert.Equal(t, http.StatusOK, rec.Code)
27-
assert.Equal(t, "", gotOutput)
27+
assert.Empty(t, gotOutput)
2828
assert.Equal(t, `ok`, rec.Body.String())
2929
}
3030

@@ -42,7 +42,7 @@ func TestHandler_Verbose(t *testing.T) {
4242
h.ServeHTTP(rec, req)
4343

4444
assert.Equal(t, http.StatusOK, rec.Code)
45-
assert.Equal(t, "", gotOutput)
45+
assert.Empty(t, gotOutput)
4646
assert.Equal(t, "+ good ok\nreadyz check passed", rec.Body.String())
4747
}
4848

http/ip_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import (
99
)
1010

1111
func TestRealIP(t *testing.T) {
12+
t.Parallel()
13+
1214
tests := []struct {
1315
name string
1416
req *http.Request
@@ -54,7 +56,6 @@ func TestRealIP(t *testing.T) {
5456
}
5557

5658
for _, test := range tests {
57-
test := test
5859
t.Run(test.name, func(t *testing.T) {
5960
t.Parallel()
6061

http/middleware/bench_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ import (
1313
func BenchmarkWithStats(b *testing.B) {
1414
s := statter.New(statter.DiscardReporter, time.Second)
1515
h := middleware.WithStats("test", s, http.HandlerFunc(
16-
func(w http.ResponseWriter, r *http.Request) {}),
16+
func(http.ResponseWriter, *http.Request) {}),
1717
)
1818

1919
resp := httptest.NewRecorder()
20-
req, _ := http.NewRequest("GET", "/", nil)
20+
req, _ := http.NewRequest(http.MethodGet, "/", nil)
2121

2222
b.ReportAllocs()
2323
b.ResetTimer()

http/middleware/middleware_test.go

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package middleware_test
22

33
import (
44
"bytes"
5+
"context"
56
"errors"
67
"net/http"
78
"net/http/httptest"
@@ -20,6 +21,8 @@ import (
2021
)
2122

2223
func TestRecovery(t *testing.T) {
24+
t.Parallel()
25+
2326
tests := []struct {
2427
name string
2528
val interface{}
@@ -38,18 +41,20 @@ func TestRecovery(t *testing.T) {
3841
}
3942

4043
for _, test := range tests {
41-
test := test
4244
t.Run(test.name, func(t *testing.T) {
4345
t.Parallel()
4446

4547
buf := bytes.Buffer{}
4648
log := logger.New(&buf, logger.LogfmtFormat(), logger.Info)
4749

48-
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
50+
next := http.HandlerFunc(func(http.ResponseWriter, *http.Request) {
4951
panic(test.val)
5052
})
5153

52-
req, _ := http.NewRequest("GET", "/", nil)
54+
ctx, cancel := context.WithCancel(context.Background())
55+
t.Cleanup(cancel)
56+
57+
req, _ := http.NewRequestWithContext(ctx, http.MethodGet, "/", nil)
5358
resp := httptest.NewRecorder()
5459

5560
defer func() {
@@ -66,8 +71,10 @@ func TestRecovery(t *testing.T) {
6671
}
6772

6873
func TestRequestID(t *testing.T) {
74+
t.Parallel()
75+
6976
var nextCalled bool
70-
next := http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
77+
next := http.HandlerFunc(func(_ http.ResponseWriter, req *http.Request) {
7178
nextCalled = true
7279

7380
got, ok := request.IDFrom(req.Context())
@@ -76,7 +83,10 @@ func TestRequestID(t *testing.T) {
7683
assert.NotEmpty(t, got)
7784
})
7885

79-
req := httptest.NewRequest(http.MethodGet, "/some/thing", nil)
86+
ctx, cancel := context.WithCancel(context.Background())
87+
t.Cleanup(cancel)
88+
89+
req := httptest.NewRequestWithContext(ctx, http.MethodGet, "/some/thing", nil)
8090
rec := httptest.NewRecorder()
8191

8292
middleware.RequestID()(next).ServeHTTP(rec, req)
@@ -86,6 +96,8 @@ func TestRequestID(t *testing.T) {
8696
}
8797

8898
func TestStats(t *testing.T) {
99+
t.Parallel()
100+
89101
tests := []struct {
90102
name string
91103
handlerName string
@@ -106,13 +118,12 @@ func TestStats(t *testing.T) {
106118
}
107119

108120
for _, test := range tests {
109-
test := test
110121
t.Run(test.name, func(t *testing.T) {
111122
t.Parallel()
112123

113124
m := &mockReporter{}
114125
m.On("Counter", "requests", int64(1), test.wantTags)
115-
wantTags := append(test.wantTags, [][2]string{{"code", "305"}, {"code-group", "3xx"}}...)
126+
wantTags := append(test.wantTags, [][2]string{{"code", "305"}, {"code-group", "3xx"}}...) //nolint:gocritic
116127
sort.Slice(wantTags, func(i, j int) bool {
117128
return wantTags[i][0] < wantTags[j][0]
118129
})
@@ -123,12 +134,15 @@ func TestStats(t *testing.T) {
123134
s := statter.New(m, time.Second)
124135

125136
next := http.HandlerFunc(
126-
func(w http.ResponseWriter, r *http.Request) {
127-
w.WriteHeader(305)
137+
func(w http.ResponseWriter, _ *http.Request) {
138+
w.WriteHeader(http.StatusUseProxy)
128139
})
129140

141+
ctx, cancel := context.WithCancel(context.Background())
142+
t.Cleanup(cancel)
143+
144+
req, _ := http.NewRequestWithContext(ctx, http.MethodGet, test.path, nil)
130145
resp := httptest.NewRecorder()
131-
req, _ := http.NewRequest("GET", test.path, nil)
132146

133147
middleware.Stats(test.handlerName, s)(next).ServeHTTP(resp, req)
134148

@@ -141,17 +155,22 @@ func TestStats(t *testing.T) {
141155
}
142156

143157
func TestWithStats_Prometheus(t *testing.T) {
158+
t.Parallel()
159+
144160
reporter := prometheus.New("test")
145161
s := statter.New(reporter, time.Second)
146162

147163
h := middleware.WithStats("test-handler", s, http.HandlerFunc(
148-
func(w http.ResponseWriter, r *http.Request) {
149-
w.WriteHeader(305)
164+
func(w http.ResponseWriter, _ *http.Request) {
165+
w.WriteHeader(http.StatusUseProxy)
150166
}),
151167
)
152168

169+
ctx, cancel := context.WithCancel(context.Background())
170+
t.Cleanup(cancel)
171+
172+
req, _ := http.NewRequestWithContext(ctx, http.MethodGet, "/foobar", nil)
153173
resp := httptest.NewRecorder()
154-
req, _ := http.NewRequest("GET", "/foobar", nil)
155174

156175
h.ServeHTTP(resp, req)
157176

http/server/server_test.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func TestGenericServer_Run(t *testing.T) {
6060
url := "http://" + ln.Addr().String() + "/"
6161
statusCode, _ := requireDoRequest(t, url)
6262

63-
assert.Equal(t, statusCode, http.StatusOK)
63+
assert.Equal(t, http.StatusOK, statusCode)
6464
assert.True(t, handlerCalled)
6565

6666
cancel()
@@ -123,7 +123,7 @@ func TestGenericServer_RunWithTLS(t *testing.T) {
123123
url := "https://" + ln.Addr().String() + "/"
124124
statusCode, _ := requireDoRequest(t, url)
125125

126-
assert.Equal(t, statusCode, http.StatusOK)
126+
assert.Equal(t, http.StatusOK, statusCode)
127127
assert.True(t, handlerCalled)
128128

129129
cancel()
@@ -149,7 +149,7 @@ func TestGenericServer_RunWithHooks(t *testing.T) {
149149
}
150150

151151
postStartHookCalledCh := make(chan struct{})
152-
srv.MustAddPostStartHook("test", func(t context.Context) error {
152+
srv.MustAddPostStartHook("test", func(_ context.Context) error {
153153
close(postStartHookCalledCh)
154154
return nil
155155
})
@@ -232,12 +232,12 @@ func TestGenericServer_RunWithHealthChecks(t *testing.T) {
232232

233233
url := "http://" + ln.Addr().String() + "/readyz?verbose=1"
234234
statusCode, body := requireDoRequest(t, url)
235-
assert.Equal(t, statusCode, http.StatusOK)
235+
assert.Equal(t, http.StatusOK, statusCode)
236236
assert.Equal(t, "+ postStartHook:test ok\n+ test ok\n+ shutdown ok\nreadyz check passed", body)
237237

238238
url = "http://" + ln.Addr().String() + "/livez?verbose=1"
239239
statusCode, body = requireDoRequest(t, url)
240-
assert.Equal(t, statusCode, http.StatusOK)
240+
assert.Equal(t, http.StatusOK, statusCode)
241241
assert.Equal(t, "+ test ok\nlivez check passed", body)
242242

243243
cancel()
@@ -298,7 +298,7 @@ func TestGenericServer_RunShutdownCausesReadyzToFail(t *testing.T) {
298298

299299
url := "http://" + ln.Addr().String() + "/readyz?verbose=1"
300300
statusCode, body := requireDoRequest(t, url)
301-
assert.Equal(t, statusCode, http.StatusInternalServerError)
301+
assert.Equal(t, http.StatusInternalServerError, statusCode)
302302
assert.Equal(t, "+ test ok\n- shutdown failed\nreadyz check failed\n", body)
303303

304304
select {
@@ -330,7 +330,7 @@ func TestGenericServer_RunHandlesServerError(t *testing.T) {
330330

331331
err = srv.Run(ctx)
332332

333-
assert.Error(t, err)
333+
require.Error(t, err)
334334
assert.Contains(t, err.Error(), "starting server: listen tcp 127.0.0.1:")
335335
assert.Contains(t, err.Error(), "bind: address already in use")
336336
}
@@ -393,7 +393,10 @@ func requireDoRequest(t *testing.T, path string) (int, string) {
393393
},
394394
}
395395

396-
req, err := http.NewRequest(http.MethodGet, path, nil)
396+
ctx, cancel := context.WithCancel(context.Background())
397+
t.Cleanup(cancel)
398+
399+
req, err := http.NewRequestWithContext(ctx, http.MethodGet, path, nil)
397400
require.NoError(t, err)
398401

399402
resp, err := client.Do(req)

0 commit comments

Comments
 (0)