From 89b977e920859a78547a003189910943d36daf05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Otto=20Kr=C3=B6pke?= Date: Tue, 12 Nov 2024 21:51:48 +0100 Subject: [PATCH] chore(deps): bump dependencies (#350) --- .github/workflows/ci.yaml | 2 +- .golangci.yaml | 3 +- cmd/daemon/full_test.go | 2 +- cmd/daemon/root_test.go | 37 +++++------- go.mod | 2 +- go.sum | 4 +- internal/oauth2/refresh_test.go | 92 ++++++++++++++++++++++++------ internal/utils/testutils/logger.go | 19 +++--- pkg/plugin/go.mod | 2 +- pkg/plugin/go.sum | 4 +- tools/go.mod | 18 +++--- tools/go.sum | 39 +++++++------ 12 files changed, 136 insertions(+), 88 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 33ab4063..6541d842 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -3,7 +3,7 @@ name: CI env: PACKAGES: openvpn crossbuild-essential-arm64 libssl-dev:arm64 # renovate: github=golangci/golangci-lint - GO_LINT_CI_VERSION: v1.61.0 + GO_LINT_CI_VERSION: v1.62.0 # renovate: github=goreleaser/goreleaser GORELEASER_VERSION: v2.4.4 diff --git a/.golangci.yaml b/.golangci.yaml index 81558802..499a4b8f 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -3,13 +3,12 @@ linters: disable: - depguard - exhaustruct - - gomnd - funlen - ireturn - err113 - - execinquery - mnd - exportloopref + - recvcheck # https://github.com/raeperd/recvcheck/issues/7 issues: exclude-rules: diff --git a/cmd/daemon/full_test.go b/cmd/daemon/full_test.go index 373d8cb0..5bcbec16 100644 --- a/cmd/daemon/full_test.go +++ b/cmd/daemon/full_test.go @@ -59,7 +59,7 @@ func TestFull(t *testing.T) { resourceServer, _, clientCredentials, err := testutils.SetupResourceServer(t, httpListener) require.NoError(t, err) - buf := new(testutils.Buffer) + buf := new(testutils.SyncBuffer) jar, err := cookiejar.New(nil) require.NoError(t, err) diff --git a/cmd/daemon/root_test.go b/cmd/daemon/root_test.go index 2e71e0e4..0a773021 100644 --- a/cmd/daemon/root_test.go +++ b/cmd/daemon/root_test.go @@ -1,8 +1,6 @@ package daemon_test import ( - "bytes" - "io" "testing" "github.com/jkroepke/openvpn-auth-oauth2/cmd/daemon" @@ -15,27 +13,21 @@ import ( func TestExecuteVersion(t *testing.T) { t.Parallel() - var buf bytes.Buffer + logger := testutils.NewTestLogger() + returnCode := daemon.Execute([]string{"", "--version"}, logger, "version", "commit", "date") + output := logger.String() - buf.Grow(16 << 20) // pre-allocate buffer to avoid race conditions. (grow vs string) - _ = io.Writer(&buf) - - returnCode := daemon.Execute([]string{"", "--version"}, &buf, "version", "commit", "date") - assert.Equal(t, 0, returnCode, buf.String()) + assert.Equal(t, 0, returnCode, output) } func TestExecuteHelp(t *testing.T) { t.Parallel() - var buf bytes.Buffer - - buf.Grow(16 << 20) // pre-allocate buffer to avoid race conditions. (grow vs string) - _ = io.Writer(&buf) - - returnCode := daemon.Execute([]string{"openvpn-auth-oauth2-test", "--help"}, &buf, "version", "commit", "date") - output := buf.String() + logger := testutils.NewTestLogger() + returnCode := daemon.Execute([]string{"openvpn-auth-oauth2-test", "--help"}, logger, "version", "commit", "date") + output := logger.String() - assert.Equal(t, 0, returnCode, buf.String()) + assert.Equal(t, 0, returnCode, output) assert.Contains(t, output, "Usage of openvpn-auth-oauth2-test") assert.Contains(t, output, "--version") } @@ -96,11 +88,6 @@ func TestExecuteConfigInvalid(t *testing.T) { t.Run(tt.name, func(t *testing.T) { t.Parallel() - var buf bytes.Buffer - - buf.Grow(16 << 20) // pre-allocate buffer to avoid race conditions. (grow vs string) - _ = io.Writer(&buf) - managementInterface, err := nettest.NewLocalListener("tcp") require.NoError(t, err) @@ -108,10 +95,12 @@ func TestExecuteConfigInvalid(t *testing.T) { assert.NoError(t, managementInterface.Close()) }) - returnCode := daemon.Execute(append(tt.args, "--openvpn.addr=tcp://"+managementInterface.Addr().String()), &buf, "version", "commit", "date") + logger := testutils.NewTestLogger() + returnCode := daemon.Execute(append(tt.args, "--openvpn.addr=tcp://"+managementInterface.Addr().String()), logger, "version", "commit", "date") + output := logger.String() - assert.Equal(t, 1, returnCode, buf.String()) - assert.Contains(t, buf.String(), tt.err, buf.String()) + assert.Equal(t, 1, returnCode, output) + assert.Contains(t, output, tt.err, output) }) } } diff --git a/go.mod b/go.mod index aa47303a..f2ef4c95 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/madflojo/testcerts v1.3.0 github.com/stretchr/testify v1.9.0 github.com/zitadel/logging v0.6.1 - github.com/zitadel/oidc/v3 v3.32.1 + github.com/zitadel/oidc/v3 v3.33.0 golang.org/x/net v0.31.0 golang.org/x/oauth2 v0.24.0 golang.org/x/text v0.20.0 diff --git a/go.sum b/go.sum index 3c213c77..02c9b865 100644 --- a/go.sum +++ b/go.sum @@ -70,8 +70,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/zitadel/logging v0.6.1 h1:Vyzk1rl9Kq9RCevcpX6ujUaTYFX43aa4LkvV1TvUk+Y= github.com/zitadel/logging v0.6.1/go.mod h1:Y4CyAXHpl3Mig6JOszcV5Rqqsojj+3n7y2F591Mp/ow= -github.com/zitadel/oidc/v3 v3.32.1 h1:uE7IgQq4yJfQPXaIbvkOjOaIyb10OF1QtG1COUB/efE= -github.com/zitadel/oidc/v3 v3.32.1/go.mod h1:DyE/XClysRK/ozFaZSqlYamKVnTh4l6Ln25ihSNI03w= +github.com/zitadel/oidc/v3 v3.33.0 h1:jAWjymx780VCSr1PpLIjGWzlfr/rB3GJEgN/UTRIk64= +github.com/zitadel/oidc/v3 v3.33.0/go.mod h1:zkoZ1Oq6CweX3BaLrftLEGCs6YK6zDpjjVGZrP10AWU= github.com/zitadel/schema v1.3.0 h1:kQ9W9tvIwZICCKWcMvCEweXET1OcOyGEuFbHs4o5kg0= github.com/zitadel/schema v1.3.0/go.mod h1:NptN6mkBDFvERUCvZHlvWmmME+gmZ44xzwRXwhzsbtc= go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= diff --git a/internal/oauth2/refresh_test.go b/internal/oauth2/refresh_test.go index a3e7a5c8..f231ee52 100644 --- a/internal/oauth2/refresh_test.go +++ b/internal/oauth2/refresh_test.go @@ -33,14 +33,16 @@ func TestRefreshReAuth(t *testing.T) { var refreshToken string for _, tt := range []struct { - name string - clientCommonName string - conf config.Config - rt http.RoundTripper + name string + clientCommonName string + nonInteractiveShouldWork bool + conf config.Config + rt http.RoundTripper }{ { - name: "Refresh", - clientCommonName: "test", + name: "Refresh", + clientCommonName: "test", + nonInteractiveShouldWork: true, conf: func() config.Config { conf := config.Defaults conf.OAuth2.Refresh.Enabled = true @@ -52,8 +54,9 @@ func TestRefreshReAuth(t *testing.T) { rt: http.DefaultTransport, }, { - name: "Refresh with empty common name", - clientCommonName: "", + name: "Refresh with empty common name", + clientCommonName: "", + nonInteractiveShouldWork: true, conf: func() config.Config { conf := config.Defaults conf.OpenVpn.AuthTokenUser = true @@ -66,8 +69,9 @@ func TestRefreshReAuth(t *testing.T) { rt: http.DefaultTransport, }, { - name: "Refresh with ValidateUser=false", - clientCommonName: "test", + name: "Refresh with ValidateUser=false", + clientCommonName: "test", + nonInteractiveShouldWork: true, conf: func() config.Config { conf := config.Defaults conf.OAuth2.Refresh.Enabled = true @@ -79,8 +83,9 @@ func TestRefreshReAuth(t *testing.T) { rt: http.DefaultTransport, }, { - name: "Refresh with SessionID=true + ValidateUser=false", - clientCommonName: "test", + name: "Refresh with SessionID=true + ValidateUser=false", + clientCommonName: "test", + nonInteractiveShouldWork: true, conf: func() config.Config { conf := config.Defaults conf.OpenVpn.AuthTokenUser = false @@ -93,8 +98,9 @@ func TestRefreshReAuth(t *testing.T) { rt: http.DefaultTransport, }, { - name: "Refresh with provider=google", - clientCommonName: "test", + name: "Refresh with provider=google", + clientCommonName: "test", + nonInteractiveShouldWork: true, conf: func() config.Config { conf := config.Defaults conf.OpenVpn.AuthTokenUser = false @@ -109,8 +115,9 @@ func TestRefreshReAuth(t *testing.T) { rt: http.DefaultTransport, }, { - name: "Refresh with provider=github", - clientCommonName: "test", + name: "Refresh with provider=github", + clientCommonName: "test", + nonInteractiveShouldWork: true, conf: func() config.Config { conf := config.Defaults conf.OpenVpn.AuthTokenUser = false @@ -124,8 +131,46 @@ func TestRefreshReAuth(t *testing.T) { rt: http.DefaultTransport, }, { - name: "Refresh without returning refresh token", - clientCommonName: "test", + name: "Refresh with failed non-interactive authentication", + clientCommonName: "test", + nonInteractiveShouldWork: false, + conf: func() config.Config { + conf := config.Defaults + conf.OpenVpn.AuthTokenUser = false + conf.OAuth2.Provider = generic.Name + conf.OAuth2.Refresh.Enabled = true + conf.OAuth2.Refresh.ValidateUser = true + conf.OAuth2.Refresh.UseSessionID = false + + return conf + }(), + rt: testutils.NewRoundTripperFunc(http.DefaultTransport, func(rt http.RoundTripper, req *http.Request) (*http.Response, error) { + if req.URL.Path != "/oauth/token" { + return rt.RoundTrip(req) + } + + requestBody, err := io.ReadAll(req.Body) + if err != nil { + return nil, err + } + + // Initial request should work + if strings.Contains(string(requestBody), `&code=`) { + req.Body = io.NopCloser(bytes.NewReader(requestBody)) + + return rt.RoundTrip(req) + } + + res := httptest.NewRecorder() + res.WriteHeader(http.StatusInternalServerError) + + return res.Result(), nil + }), + }, + { + name: "Refresh without returning refresh token", + clientCommonName: "test", + nonInteractiveShouldWork: true, conf: func() config.Config { conf := config.Defaults conf.OpenVpn.AuthTokenUser = false @@ -272,6 +317,17 @@ func TestRefreshReAuth(t *testing.T) { tt.clientCommonName, ) + if !tt.nonInteractiveShouldWork { + auth := testutils.ReadLine(t, managementInterfaceConn, reader) + assert.Contains(t, auth, "client-pending-auth 1 3 \"WEB_AUTH::") + testutils.SendMessage(t, managementInterfaceConn, "SUCCESS: %s command succeeded", strings.SplitN(auth, " ", 2)[0]) + + openVPNClient.Shutdown() + wg.Wait() + + return + } + if tt.conf.OpenVpn.AuthTokenUser { testutils.ExpectMessage(t, managementInterfaceConn, reader, "client-auth 1 3") diff --git a/internal/utils/testutils/logger.go b/internal/utils/testutils/logger.go index 9775cc08..67ae82c1 100644 --- a/internal/utils/testutils/logger.go +++ b/internal/utils/testutils/logger.go @@ -8,30 +8,31 @@ import ( type Logger struct { *slog.Logger - *Buffer + *SyncBuffer } func NewTestLogger() *Logger { - buffer := new(Buffer) + syncBuffer := new(SyncBuffer) + syncBuffer.buffer.Grow(16 << 20) return &Logger{ - slog.New(slog.NewTextHandler(buffer, nil)), - buffer, + slog.New(slog.NewTextHandler(syncBuffer, nil)), + syncBuffer, } } func (l Logger) GetLogs() string { - return l.Buffer.String() + return l.SyncBuffer.String() } -type Buffer struct { +type SyncBuffer struct { buffer bytes.Buffer mutex sync.Mutex } // Write appends the contents of p to the buffer, growing the buffer as needed. // It returns the number of bytes written. -func (s *Buffer) Write(p []byte) (int, error) { +func (s *SyncBuffer) Write(p []byte) (int, error) { s.mutex.Lock() defer s.mutex.Unlock() @@ -40,8 +41,8 @@ func (s *Buffer) Write(p []byte) (int, error) { // String returns the contents of the unread portion of the buffer // as a string. -// If the Buffer is a nil pointer, it returns "". -func (s *Buffer) String() string { +// If the SyncBuffer is a nil pointer, it returns "". +func (s *SyncBuffer) String() string { s.mutex.Lock() defer s.mutex.Unlock() diff --git a/pkg/plugin/go.mod b/pkg/plugin/go.mod index 5f3e8eeb..ee251f0d 100644 --- a/pkg/plugin/go.mod +++ b/pkg/plugin/go.mod @@ -25,7 +25,7 @@ require ( github.com/muhlemmer/gu v0.3.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/zitadel/logging v0.6.1 // indirect - github.com/zitadel/oidc/v3 v3.32.1 // indirect + github.com/zitadel/oidc/v3 v3.33.0 // indirect github.com/zitadel/schema v1.3.0 // indirect go.opentelemetry.io/otel v1.32.0 // indirect go.opentelemetry.io/otel/metric v1.32.0 // indirect diff --git a/pkg/plugin/go.sum b/pkg/plugin/go.sum index 6c0b4839..39d3ddbf 100644 --- a/pkg/plugin/go.sum +++ b/pkg/plugin/go.sum @@ -70,8 +70,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/zitadel/logging v0.6.1 h1:Vyzk1rl9Kq9RCevcpX6ujUaTYFX43aa4LkvV1TvUk+Y= github.com/zitadel/logging v0.6.1/go.mod h1:Y4CyAXHpl3Mig6JOszcV5Rqqsojj+3n7y2F591Mp/ow= -github.com/zitadel/oidc/v3 v3.32.1 h1:uE7IgQq4yJfQPXaIbvkOjOaIyb10OF1QtG1COUB/efE= -github.com/zitadel/oidc/v3 v3.32.1/go.mod h1:DyE/XClysRK/ozFaZSqlYamKVnTh4l6Ln25ihSNI03w= +github.com/zitadel/oidc/v3 v3.33.0 h1:jAWjymx780VCSr1PpLIjGWzlfr/rB3GJEgN/UTRIk64= +github.com/zitadel/oidc/v3 v3.33.0/go.mod h1:zkoZ1Oq6CweX3BaLrftLEGCs6YK6zDpjjVGZrP10AWU= github.com/zitadel/schema v1.3.0 h1:kQ9W9tvIwZICCKWcMvCEweXET1OcOyGEuFbHs4o5kg0= github.com/zitadel/schema v1.3.0/go.mod h1:NptN6mkBDFvERUCvZHlvWmmME+gmZ44xzwRXwhzsbtc= go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= diff --git a/tools/go.mod b/tools/go.mod index c770af61..2c3ac9b6 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -6,7 +6,7 @@ require ( github.com/bombsimon/wsl/v4 v4.4.1 github.com/catenacyber/perfsprint v0.7.1 github.com/daixiang0/gci v0.13.5 - github.com/golangci/golangci-lint v1.61.0 + github.com/golangci/golangci-lint v1.62.0 github.com/tetafro/godot v1.4.18 golang.org/x/tools v0.27.0 mvdan.cc/gofumpt v0.7.0 @@ -67,6 +67,7 @@ require ( github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect + github.com/golangci/go-printf-func-name v0.1.0 // indirect github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 // indirect github.com/golangci/misspell v0.6.0 // indirect github.com/golangci/modinfo v0.3.4 // indirect @@ -85,7 +86,6 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jgautheron/goconst v1.7.1 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect - github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect github.com/jjti/go-spancheck v0.6.2 // indirect github.com/julz/importas v0.1.0 // indirect github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect @@ -94,11 +94,10 @@ require ( github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.10 // indirect github.com/kyoh86/exportloopref v0.1.11 // indirect - github.com/lasiar/canonicalheader v1.1.1 // indirect + github.com/lasiar/canonicalheader v1.1.2 // indirect github.com/ldez/gomoddirectives v0.2.4 // indirect github.com/ldez/tagliatelle v0.5.0 // indirect github.com/leonklingele/grouper v1.1.2 // indirect - github.com/lufeee/execinquery v1.2.1 // indirect github.com/macabu/inamedparam v0.1.3 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/maratori/testableexamples v1.0.0 // indirect @@ -115,7 +114,7 @@ require ( github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.18.0 // indirect + github.com/nunnatsa/ginkgolinter v0.18.2 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -129,7 +128,9 @@ require ( github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect + github.com/raeperd/recvcheck v0.1.2 // indirect github.com/rivo/uniseg v0.4.7 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/ryancurrah/gomodguard v1.3.5 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect github.com/sagikazarmark/locafero v0.6.0 // indirect @@ -164,18 +165,19 @@ require ( github.com/ultraware/funlen v0.1.0 // indirect github.com/ultraware/whitespace v0.1.1 // indirect github.com/uudashr/gocognit v1.1.3 // indirect + github.com/uudashr/iface v1.2.0 // indirect github.com/xen0n/gosmopolitan v1.2.2 // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.3.0 // indirect github.com/ykadowak/zerologlint v0.1.5 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect - go-simpler.org/musttag v0.12.2 // indirect + go-simpler.org/musttag v0.13.0 // indirect go-simpler.org/sloglint v0.7.2 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect - golang.org/x/exp/typeparams v0.0.0-20241108182801-04b207964beb // indirect + golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect + golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect golang.org/x/sync v0.9.0 // indirect golang.org/x/sys v0.27.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 0cf10b54..03223d5f 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -132,10 +132,12 @@ github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= +github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME= github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9/go.mod h1:Oesb/0uFAyWoaw1U1qS5zyjCg5NP9C9iwjnI4tIsXEE= -github.com/golangci/golangci-lint v1.61.0 h1:VvbOLaRVWmyxCnUIMTbf1kDsaJbTzH20FAMXTAlQGu8= -github.com/golangci/golangci-lint v1.61.0/go.mod h1:e4lztIrJJgLPhWvFPDkhiMwEFRrWlmFbrZea3FsJyN8= +github.com/golangci/golangci-lint v1.62.0 h1:/G0g+bi1BhmGJqLdNQkKBWjcim8HjOPc4tsKuHDOhcI= +github.com/golangci/golangci-lint v1.62.0/go.mod h1:jtoOhQcKTz8B6dGNFyfQV3WZkQk+YvBDewDtNpiAJts= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA= @@ -182,8 +184,6 @@ github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5 github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= github.com/jjti/go-spancheck v0.6.2 h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk= github.com/jjti/go-spancheck v0.6.2/go.mod h1:+X7lvIrR5ZdUTkxFYqzJ0abr8Sb5LOo80uOhWNqIrYA= github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= @@ -206,16 +206,14 @@ github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCT github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= -github.com/lasiar/canonicalheader v1.1.1 h1:wC+dY9ZfiqiPwAexUApFush/csSPXeIi4QqyxXmng8I= -github.com/lasiar/canonicalheader v1.1.1/go.mod h1:cXkb3Dlk6XXy+8MVQnF23CYKWlyA7kfQhSw2CcZtZb0= +github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= +github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg= github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g= github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= -github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= -github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= @@ -252,8 +250,8 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.18.0 h1:ZXO1wKhPg3A6LpbN5dMuqwhfOjN5c3ous8YdKOuqk9k= -github.com/nunnatsa/ginkgolinter v0.18.0/go.mod h1:vPrWafSULmjMGCMsfGA908if95VnHQNAahvSBOjTuWs= +github.com/nunnatsa/ginkgolinter v0.18.2 h1:b2yZTU30JabiqGnmcJtFVXLBXyAj2Dmy7ZwPUbYphyc= +github.com/nunnatsa/ginkgolinter v0.18.2/go.mod h1:Mp5o0Yc8+cBJEmcu3QAzk6QxT0HgbWO7Ofb28zrJ/Vs= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4= @@ -294,11 +292,13 @@ github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= +github.com/raeperd/recvcheck v0.1.2 h1:SjdquRsRXJc26eSonWIo8b7IMtKD3OAT2Lb5G3ZX1+4= +github.com/raeperd/recvcheck v0.1.2/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= @@ -386,6 +386,8 @@ github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/ github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= github.com/uudashr/gocognit v1.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM= github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U= +github.com/uudashr/iface v1.2.0 h1:ECJjh5q/1Zmnv/2yFpWV6H3oMg5+Mo+vL0aqw9Gjazo= +github.com/uudashr/iface v1.2.0/go.mod h1:Ux/7d/rAF3owK4m53cTVXL4YoVHKNqnoOeQHn2xrlp0= github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= @@ -404,8 +406,8 @@ gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= -go-simpler.org/musttag v0.12.2 h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs= -go-simpler.org/musttag v0.12.2/go.mod h1:uN1DVIasMTQKk6XSik7yrJoEysGtR2GRqvWnI9S7TYM= +go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= +go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY= go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo= go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= @@ -422,12 +424,12 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= +golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20241108182801-04b207964beb h1:JOkQjjcRjkXeS53Sk52Ffy747IU/PpNnhTBsIqOmybw= -golang.org/x/exp/typeparams v0.0.0-20241108182801-04b207964beb/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f h1:WTyX8eCCyfdqiPYkRGm0MqElSfYFH3yR1+rl/mct9sA= +golang.org/x/exp/typeparams v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -518,7 +520,6 @@ golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=