Skip to content

Commit

Permalink
chore: update golangci-lint and go version (#51)
Browse files Browse the repository at this point in the history
* update go version from `1.22` to `1.23`
* update golangci-lint from `v1.57.2` to `v1.62.0`
* update files due to new linters
* fix docker warning
  • Loading branch information
rancoud authored Nov 19, 2024
1 parent c3b2c52 commit b15adde
Show file tree
Hide file tree
Showing 13 changed files with 210 additions and 220 deletions.
12 changes: 1 addition & 11 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,7 @@ linters:
- exhaustruct
- gofumpt
# deprecated
- deadcode
- exhaustivestruct
- golint
- ifshort
- interfacer
- maligned
- nosnakecase
- scopelint
- structcheck
- varcheck
- intrange
- exportloopref

issues:
max-issues-per-linter: 0
Expand Down
4 changes: 2 additions & 2 deletions configuration/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func eraseConfigurationValuesWithEnv(obj any) {
val = reflect.ValueOf(obj)
}

for idxNumField := 0; idxNumField < val.NumField(); idxNumField++ {
for idxNumField := range val.NumField() {
if val.Field(idxNumField).Kind() == reflect.Struct {
eraseConfigurationValuesWithEnv(val.Field(idxNumField).Addr().Interface())

Expand Down Expand Up @@ -119,7 +119,7 @@ func eraseConfigurationValuesWithEnv(obj any) {

val.Field(idxNumField).Set(reflect.MakeSlice(val.Field(idxNumField).Type(), len(stringEnvValues), len(stringEnvValues)))

for idxSlice := 0; idxSlice < len(stringEnvValues); idxSlice++ {
for idxSlice := range stringEnvValues {
val.Field(idxNumField).Index(idxSlice).SetString(stringEnvValues[idxSlice])
}
}
Expand Down
2 changes: 0 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
version: "3.8"

services:
app:
image: discord-bot:local
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/blueprintue/discord-bot

go 1.22
go 1.23

require (
github.com/bwmarrin/discordgo v0.28.1
Expand Down
2 changes: 1 addition & 1 deletion hack/lint.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ ENV GOFLAGS="-buildvcs=false"
RUN apk add --no-cache gcc linux-headers musl-dev
WORKDIR /src

FROM golangci/golangci-lint:v1.57.2-alpine AS golangci-lint
FROM golangci/golangci-lint:v1.62.0-alpine AS golangci-lint
FROM base AS lint
RUN --mount=type=bind,target=. \
--mount=type=cache,target=/root/.cache \
Expand Down
2 changes: 1 addition & 1 deletion hack/test.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ENV GOFLAGS="-buildvcs=false"
RUN apk add --no-cache gcc linux-headers musl-dev
WORKDIR /src

FROM base as test
FROM base AS test
RUN --mount=type=bind,target=. \
--mount=type=cache,target=/root/.cache \
--mount=type=cache,target=/go/pkg/mod \
Expand Down
15 changes: 8 additions & 7 deletions healthchecks/healthchecks_fail_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/blueprintue/discord-bot/healthchecks"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

Expand All @@ -23,15 +24,15 @@ func TestFail(t *testing.T) {

svr := httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
if currentRequestIdx == 0 {
require.Equal(t, "/00000000-0000-0000-0000-000000000000/start", req.RequestURI)
assert.Equal(t, "/00000000-0000-0000-0000-000000000000/start", req.RequestURI)
startedMessage, err := io.ReadAll(req.Body)
require.NoError(t, err)
require.Equal(t, "starts", string(startedMessage))
assert.NoError(t, err)
assert.Equal(t, "starts", string(startedMessage))
} else {
require.Equal(t, "/00000000-0000-0000-0000-000000000000/fail", req.RequestURI)
assert.Equal(t, "/00000000-0000-0000-0000-000000000000/fail", req.RequestURI)
failedMessage, err := io.ReadAll(req.Body)
require.NoError(t, err)
require.Equal(t, "stops", string(failedMessage))
assert.NoError(t, err)
assert.Equal(t, "stops", string(failedMessage))
}

currentRequestIdx++
Expand Down Expand Up @@ -84,6 +85,6 @@ func TestFail_Errors(t *testing.T) {
healthchecksManager.Fail()

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"error","error":"HTTP error 500","message":"Could not send Fail HealthChecks client"}`, parts[0])
require.JSONEq(t, `{"level":"error","error":"HTTP error 500","message":"Could not send Fail HealthChecks client"}`, parts[0])
require.Equal(t, ``, parts[1])
}
9 changes: 5 additions & 4 deletions healthchecks/healthchecks_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/blueprintue/discord-bot/healthchecks"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

Expand All @@ -20,10 +21,10 @@ func TestRun(t *testing.T) {
log.Logger = zerolog.New(&bufferLogs).Level(zerolog.TraceLevel).With().Logger()

svr := httptest.NewServer(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
require.Equal(t, "/00000000-0000-0000-0000-000000000000/start", req.RequestURI)
assert.Equal(t, "/00000000-0000-0000-0000-000000000000/start", req.RequestURI)
startedMessage, err := io.ReadAll(req.Body)
require.NoError(t, err)
require.Equal(t, "starts", string(startedMessage))
assert.NoError(t, err)
assert.Equal(t, "starts", string(startedMessage))

res.WriteHeader(http.StatusOK)
}))
Expand Down Expand Up @@ -69,6 +70,6 @@ func TestRun_Errors(t *testing.T) {
require.Error(t, err)

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"error","error":"HTTP error 500","message":"Could not send Start HealthChecks client"}`, parts[0])
require.JSONEq(t, `{"level":"error","error":"HTTP error 500","message":"Could not send Start HealthChecks client"}`, parts[0])
require.Equal(t, ``, parts[1])
}
10 changes: 5 additions & 5 deletions healthchecks/healthchecks_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ func TestNewHealthchecksManager(t *testing.T) {
require.NotNil(t, healthchecksManager)

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","message":"Checking configuration for Healthchecks"}`, parts[0])
require.JSONEq(t, `{"level":"info","message":"Checking configuration for Healthchecks"}`, parts[0])
require.Equal(t, ``, parts[1])

bufferLogs.Reset()
Expand All @@ -36,10 +36,10 @@ func TestNewHealthchecksManager(t *testing.T) {
require.NotNil(t, healthchecksManager)

parts = strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","message":"Checking configuration for Healthchecks"}`, parts[0])
require.Equal(t, `{"level":"info","message":"BaseURL is empty, use default URL https://hc-ping.com/"}`, parts[1])
require.Equal(t, `{"level":"info","message":"StartedMessage is empty, use default \"discord-bot started\""}`, parts[2])
require.Equal(t, `{"level":"info","message":"FailedMessage is empty, use default \"discord-bot stopped\""}`, parts[3])
require.JSONEq(t, `{"level":"info","message":"Checking configuration for Healthchecks"}`, parts[0])
require.JSONEq(t, `{"level":"info","message":"BaseURL is empty, use default URL https://hc-ping.com/"}`, parts[1])
require.JSONEq(t, `{"level":"info","message":"StartedMessage is empty, use default \"discord-bot started\""}`, parts[2])
require.JSONEq(t, `{"level":"info","message":"FailedMessage is empty, use default \"discord-bot stopped\""}`, parts[3])
require.Equal(t, ``, parts[4])
}

Expand Down
60 changes: 30 additions & 30 deletions welcome/welcome_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ func TestHandlers_OnMessageReactionAdd(t *testing.T) {
welcomeManager.OnMessageReactionAdd(nil, nil)

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"error","message":"OnMessageReactionAdd - SKIP - Reaction is nil"}`, parts[0])
require.JSONEq(t, `{"level":"error","message":"OnMessageReactionAdd - SKIP - Reaction is nil"}`, parts[0])
require.Equal(t, ``, parts[1])
})

Expand All @@ -114,7 +114,7 @@ func TestHandlers_OnMessageReactionAdd(t *testing.T) {
welcomeManager.OnMessageReactionAdd(nil, &discordgo.MessageReactionAdd{MessageReaction: nil})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"error","message":"OnMessageReactionAdd - SKIP - Reaction is nil"}`, parts[0])
require.JSONEq(t, `{"level":"error","message":"OnMessageReactionAdd - SKIP - Reaction is nil"}`, parts[0])
require.Equal(t, ``, parts[1])
})

Expand All @@ -128,8 +128,8 @@ func TestHandlers_OnMessageReactionAdd(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-id","message_id":"","message":"Incoming Message Reaction Add"}`, parts[0])
require.Equal(t, `{"level":"info","channel_id":"channel-id","message_id":"","message":"SKIP - Channel is not matching"}`, parts[1])
require.JSONEq(t, `{"level":"info","channel_id":"channel-id","message_id":"","message":"Incoming Message Reaction Add"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-id","message_id":"","message":"SKIP - Channel is not matching"}`, parts[1])
require.Equal(t, ``, parts[2])
})

Expand All @@ -144,8 +144,8 @@ func TestHandlers_OnMessageReactionAdd(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"Incoming Message Reaction Add"}`, parts[0])
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"","user_id":"bot-123","message":"SKIP - User is the bot"}`, parts[1])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"Incoming Message Reaction Add"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"","user_id":"bot-123","message":"SKIP - User is the bot"}`, parts[1])
require.Equal(t, ``, parts[2])
})

Expand All @@ -160,8 +160,8 @@ func TestHandlers_OnMessageReactionAdd(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"Incoming Message Reaction Add"}`, parts[0])
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"SKIP - Message is not matching"}`, parts[1])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"Incoming Message Reaction Add"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"SKIP - Message is not matching"}`, parts[1])
require.Equal(t, ``, parts[2])
})

Expand All @@ -177,8 +177,8 @@ func TestHandlers_OnMessageReactionAdd(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Add"}`, parts[0])
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"123","emoji":"","message":"SKIP - Emoji is not matching"}`, parts[1])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Add"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"123","emoji":"","message":"SKIP - Emoji is not matching"}`, parts[1])
require.Equal(t, ``, parts[2])
})

Expand All @@ -195,9 +195,9 @@ func TestHandlers_OnMessageReactionAdd(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Add"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Add"}`, parts[0])
//nolint:lll
require.Equal(t, `{"level":"info","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-456","message":"Adding Role to User"}`, parts[1])
require.JSONEq(t, `{"level":"info","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-456","message":"Adding Role to User"}`, parts[1])
require.Equal(t, ``, parts[2])
})
}
Expand Down Expand Up @@ -298,11 +298,11 @@ func TestHandlers_OnMessageReactionAdd_Errors(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Add"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Add"}`, parts[0])
//nolint:lll
require.Equal(t, `{"level":"info","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-456","message":"Adding Role to User"}`, parts[1])
require.JSONEq(t, `{"level":"info","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-456","message":"Adding Role to User"}`, parts[1])
//nolint:lll
require.Equal(t, `{"level":"error","error":"HTTP 500 Internal Server Error, ","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-456","message":"Could not add Role to User"}`, parts[2])
require.JSONEq(t, `{"level":"error","error":"HTTP 500 Internal Server Error, ","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-456","message":"Could not add Role to User"}`, parts[2])
require.Equal(t, ``, parts[3])
}

Expand Down Expand Up @@ -394,7 +394,7 @@ func TestHandlers_OnMessageReactionRemove(t *testing.T) {
welcomeManager.OnMessageReactionRemove(nil, nil)

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"error","message":"OnMessageReactionRemove - SKIP - Reaction is nil"}`, parts[0])
require.JSONEq(t, `{"level":"error","message":"OnMessageReactionRemove - SKIP - Reaction is nil"}`, parts[0])
require.Equal(t, ``, parts[1])
})

Expand All @@ -404,7 +404,7 @@ func TestHandlers_OnMessageReactionRemove(t *testing.T) {
welcomeManager.OnMessageReactionRemove(nil, &discordgo.MessageReactionRemove{MessageReaction: nil})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"error","message":"OnMessageReactionRemove - SKIP - Reaction is nil"}`, parts[0])
require.JSONEq(t, `{"level":"error","message":"OnMessageReactionRemove - SKIP - Reaction is nil"}`, parts[0])
require.Equal(t, ``, parts[1])
})

Expand All @@ -418,8 +418,8 @@ func TestHandlers_OnMessageReactionRemove(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-id","message_id":"","message":"Incoming Message Reaction Remove"}`, parts[0])
require.Equal(t, `{"level":"info","channel_id":"channel-id","message_id":"","message":"SKIP - Channel is not matching"}`, parts[1])
require.JSONEq(t, `{"level":"info","channel_id":"channel-id","message_id":"","message":"Incoming Message Reaction Remove"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-id","message_id":"","message":"SKIP - Channel is not matching"}`, parts[1])
require.Equal(t, ``, parts[2])
})

Expand All @@ -434,8 +434,8 @@ func TestHandlers_OnMessageReactionRemove(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"Incoming Message Reaction Remove"}`, parts[0])
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"","user_id":"bot-123","message":"SKIP - User is the bot"}`, parts[1])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"Incoming Message Reaction Remove"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"","user_id":"bot-123","message":"SKIP - User is the bot"}`, parts[1])
require.Equal(t, ``, parts[2])
})

Expand All @@ -450,8 +450,8 @@ func TestHandlers_OnMessageReactionRemove(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"Incoming Message Reaction Remove"}`, parts[0])
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"SKIP - Message is not matching"}`, parts[1])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"Incoming Message Reaction Remove"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"","message":"SKIP - Message is not matching"}`, parts[1])
require.Equal(t, ``, parts[2])
})

Expand All @@ -467,8 +467,8 @@ func TestHandlers_OnMessageReactionRemove(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Remove"}`, parts[0])
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"123","emoji":"","message":"SKIP - Emoji is not matching"}`, parts[1])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Remove"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"123","emoji":"","message":"SKIP - Emoji is not matching"}`, parts[1])
require.Equal(t, ``, parts[2])
})

Expand All @@ -485,9 +485,9 @@ func TestHandlers_OnMessageReactionRemove(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Remove"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Remove"}`, parts[0])
//nolint:lll
require.Equal(t, `{"level":"info","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-789","message":"Removing Role to User"}`, parts[1])
require.JSONEq(t, `{"level":"info","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-789","message":"Removing Role to User"}`, parts[1])
require.Equal(t, ``, parts[2])
})
}
Expand Down Expand Up @@ -587,10 +587,10 @@ func TestHandlers_OnMessageReactionRemove_Errors(t *testing.T) {
})

parts := strings.Split(bufferLogs.String(), "\n")
require.Equal(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Remove"}`, parts[0])
require.JSONEq(t, `{"level":"info","channel_id":"channel-123","message_id":"123","message":"Incoming Message Reaction Remove"}`, parts[0])
//nolint:lll
require.Equal(t, `{"level":"info","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-789","message":"Removing Role to User"}`, parts[1])
require.JSONEq(t, `{"level":"info","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-789","message":"Removing Role to User"}`, parts[1])
//nolint:lll
require.Equal(t, `{"level":"error","error":"HTTP 500 Internal Server Error, ","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-789","message":"Could not remove Role to User"}`, parts[2])
require.JSONEq(t, `{"level":"error","error":"HTTP 500 Internal Server Error, ","role_id":"role-123","role":"my role 1","channel_id":"channel-123","message_id":"123","user_id":"user-id-789","message":"Could not remove Role to User"}`, parts[2])
require.Equal(t, ``, parts[3])
}
Loading

0 comments on commit b15adde

Please sign in to comment.