From a2a8af97b66191db5a29f665ac97a6f0035802b5 Mon Sep 17 00:00:00 2001 From: Francesco Renzi Date: Thu, 27 Nov 2025 13:05:42 +0100 Subject: [PATCH] Add scripts (#33) * Add scripts * Fix errors test --- error.go => errors.go | 0 errors_test.go | 66 ++++++++++++++++++++----------------------- go.mod | 11 ++++++-- go.sum | 14 +++++++++ listener/listener.go | 6 ---- script/lint | 8 ++++++ script/test | 6 ++++ 7 files changed, 68 insertions(+), 43 deletions(-) rename error.go => errors.go (100%) create mode 100755 script/lint create mode 100755 script/test diff --git a/error.go b/errors.go similarity index 100% rename from error.go rename to errors.go diff --git a/errors_test.go b/errors_test.go index 07c0a69..2d6671c 100644 --- a/errors_test.go +++ b/errors_test.go @@ -118,80 +118,76 @@ func TestGitHubAPIError(t *testing.T) { }) } -func ParseActionsErrorFromResponse(t *testing.T) { +func TestParseActionsErrorFromResponse(t *testing.T) { t.Run("empty content length", func(t *testing.T) { response := &http.Response{ ContentLength: 0, - Header: http.Header{ - headerActionsActivityID: []string{"activity-id"}, - }, - StatusCode: 404, + Header: http.Header{}, + StatusCode: 404, } + response.Header.Add(headerActionsActivityID, "activity-id") err := parseActionsErrorFromResponse(response) require.Error(t, err) - assert.Equal(t, err.(*ActionsError).ActivityID, "activity-id") - assert.Equal(t, err.(*ActionsError).StatusCode, 404) - assert.Equal(t, err.(*ActionsError).Err.Error(), "unknown exception") + assert.Equal(t, "activity-id", err.(*ActionsError).ActivityID) + assert.Equal(t, 404, err.(*ActionsError).StatusCode) + assert.Equal(t, "unknown exception", err.(*ActionsError).Err.Error()) }) t.Run("contains text plain error", func(t *testing.T) { errorMessage := "example error message" response := &http.Response{ ContentLength: int64(len(errorMessage)), - Header: http.Header{ - headerActionsActivityID: []string{"activity-id"}, - "Content-Type": []string{"text/plain"}, - }, - StatusCode: 404, - Body: io.NopCloser(strings.NewReader(errorMessage)), + StatusCode: 404, + Header: http.Header{}, + Body: io.NopCloser(strings.NewReader(errorMessage)), } + response.Header.Add(headerActionsActivityID, "activity-id") + response.Header.Add("Content-Type", "text/plain") err := parseActionsErrorFromResponse(response) require.Error(t, err) var actionsError *ActionsError assert.ErrorAs(t, err, &actionsError) - assert.Equal(t, actionsError.ActivityID, "activity-id") - assert.Equal(t, actionsError.StatusCode, 404) - assert.Equal(t, actionsError.Err.Error(), errorMessage) + assert.Equal(t, "activity-id", actionsError.ActivityID) + assert.Equal(t, 404, actionsError.StatusCode) + assert.Equal(t, errorMessage, actionsError.Err.Error()) }) t.Run("contains json error", func(t *testing.T) { errorMessage := `{"typeName":"exception-name","message":"example error message"}` response := &http.Response{ ContentLength: int64(len(errorMessage)), - Header: http.Header{ - headerActionsActivityID: []string{"activity-id"}, - "Content-Type": []string{"application/json"}, - }, - StatusCode: 404, - Body: io.NopCloser(strings.NewReader(errorMessage)), + StatusCode: 404, + Header: http.Header{}, + Body: io.NopCloser(strings.NewReader(errorMessage)), } + response.Header.Add(headerActionsActivityID, "activity-id") + response.Header.Add("Content-Type", "application/json") err := parseActionsErrorFromResponse(response) require.Error(t, err) var actionsError *ActionsError assert.ErrorAs(t, err, &actionsError) - assert.Equal(t, actionsError.ActivityID, "activity-id") - assert.Equal(t, actionsError.StatusCode, 404) + assert.Equal(t, "activity-id", actionsError.ActivityID) + assert.Equal(t, 404, actionsError.StatusCode) inner, ok := actionsError.Err.(*ActionsExceptionError) require.True(t, ok) - assert.Equal(t, inner.ExceptionName, "exception-name") - assert.Equal(t, inner.Message, "example error message") + assert.Equal(t, "exception-name", inner.ExceptionName) + assert.Equal(t, "example error message", inner.Message) }) t.Run("wrapped exception error", func(t *testing.T) { errorMessage := `{"typeName":"exception-name","message":"example error message"}` response := &http.Response{ ContentLength: int64(len(errorMessage)), - Header: http.Header{ - headerActionsActivityID: []string{"activity-id"}, - "Content-Type": []string{"application/json"}, - }, - StatusCode: 404, - Body: io.NopCloser(strings.NewReader(errorMessage)), + StatusCode: 404, + Header: http.Header{}, + Body: io.NopCloser(strings.NewReader(errorMessage)), } + response.Header.Add(headerActionsActivityID, "activity-id") + response.Header.Add("Content-Type", "application/json") err := parseActionsErrorFromResponse(response) require.Error(t, err) @@ -199,7 +195,7 @@ func ParseActionsErrorFromResponse(t *testing.T) { var actionsExceptionError *ActionsExceptionError assert.ErrorAs(t, err, &actionsExceptionError) - assert.Equal(t, actionsExceptionError.ExceptionName, "exception-name") - assert.Equal(t, actionsExceptionError.Message, "example error message") + assert.Equal(t, "exception-name", actionsExceptionError.ExceptionName) + assert.Equal(t, "example error message", actionsExceptionError.Message) }) } diff --git a/go.mod b/go.mod index 48077e0..55dbf62 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/google/uuid v1.6.0 github.com/hashicorp/go-retryablehttp v0.7.8 github.com/stretchr/testify v1.11.1 - golang.org/x/net v0.46.0 + golang.org/x/net v0.47.0 ) require ( @@ -16,7 +16,14 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect + golang.org/x/text v0.31.0 // indirect + golang.org/x/tools v0.39.0 // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) + +tool golang.org/x/tools/cmd/deadcode diff --git a/go.sum b/go.sum index b9754b3..b3527db 100644 --- a/go.sum +++ b/go.sum @@ -29,12 +29,26 @@ github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/listener/listener.go b/listener/listener.go index e06618f..59bb1e9 100644 --- a/listener/listener.go +++ b/listener/listener.go @@ -300,12 +300,6 @@ func (l *Listener) deleteLastMessage(ctx context.Context) error { return nil } -type parsedMessage struct { - statistics *scaleset.RunnerScaleSetStatistic - jobsStarted []*scaleset.JobStarted - jobsCompleted []*scaleset.JobCompleted -} - func (l *Listener) refreshSession(ctx context.Context) error { l.logger.Info("Message queue token is expired during GetNextMessage, refreshing...") session, err := l.client.RefreshMessageSession( diff --git a/script/lint b/script/lint new file mode 100755 index 0000000..7a0580a --- /dev/null +++ b/script/lint @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -eEuo pipefail + +golangci-lint run ./... + +go tool deadcode -test ./... + diff --git a/script/test b/script/test new file mode 100755 index 0000000..961b43b --- /dev/null +++ b/script/test @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -eEuo pipefail + +go test ./... "$@" +