diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 51fbc24..f118ccd 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -21,7 +21,7 @@ env: GO111MODULE: "on" CACHE_BENCHMARK: "off" # Enables benchmark result reuse between runs, may skew latency results. RUN_BASE_BENCHMARK: "on" # Runs benchmark for PR base in case benchmark result is missing. - GO_VERSION: 1.21.x + GO_VERSION: 1.22.x jobs: bench: runs-on: ubuntu-latest diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 5e985cc..6239219 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -21,13 +21,13 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: 1.21.x + go-version: 1.22.x - uses: actions/checkout@v2 - name: golangci-lint - uses: golangci/golangci-lint-action@v3.7.0 + uses: golangci/golangci-lint-action@v4.0.0 with: # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. - version: v1.55.2 + version: v1.56.2 # Optional: working directory, useful for monorepos # working-directory: somedir diff --git a/.github/workflows/gorelease.yml b/.github/workflows/gorelease.yml index 97ebe87..6356a9d 100644 --- a/.github/workflows/gorelease.yml +++ b/.github/workflows/gorelease.yml @@ -9,7 +9,7 @@ concurrency: cancel-in-progress: true env: - GO_VERSION: 1.21.x + GO_VERSION: 1.22.x jobs: gorelease: runs-on: ubuntu-latest diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml index 4214222..9b6e93d 100644 --- a/.github/workflows/test-unit.yml +++ b/.github/workflows/test-unit.yml @@ -15,13 +15,13 @@ concurrency: env: GO111MODULE: "on" RUN_BASE_COVERAGE: "on" # Runs test for PR base in case base test coverage is missing. - COV_GO_VERSION: 1.21.x # Version of Go to collect coverage + COV_GO_VERSION: 1.22.x # Version of Go to collect coverage TARGET_DELTA_COV: 90 # Target coverage of changed lines, in percents jobs: test: strategy: matrix: - go-version: [ 1.19.x, 1.20.x, 1.21.x ] + go-version: [ 1.20.x, 1.21.x, 1.22.x ] runs-on: ubuntu-latest steps: - name: Install Go stable diff --git a/.golangci.yml b/.golangci.yml index 21b8d77..c3e5694 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -22,6 +22,7 @@ linters-settings: linters: enable-all: true disable: + - spancheck - lll - maligned - gochecknoglobals diff --git a/Makefile b/Makefile index 4027c74..79a4626 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -#GOLANGCI_LINT_VERSION := "v1.55.2" # Optional configuration to pinpoint golangci-lint version. +#GOLANGCI_LINT_VERSION := "v1.56.2" # Optional configuration to pinpoint golangci-lint version. # The head of Makefile determines location of dev-go to include standard targets. GO ?= go diff --git a/database/observability.go b/database/observability.go index da0e2f6..6d6733e 100644 --- a/database/observability.go +++ b/database/observability.go @@ -61,7 +61,7 @@ func wrapOptions(logger ctxd.Logger, statsTracker stats.Tracker) []dbwrap.Option return []dbwrap.Option{ // This interceptor enables reverse debugging from DB side. - dbwrap.WithInterceptor(func(ctx context.Context, operation dbwrap.Operation, statement string, args []driver.NamedValue) (context.Context, string, []driver.NamedValue) { + dbwrap.WithInterceptor(func(ctx context.Context, _ dbwrap.Operation, statement string, args []driver.NamedValue) (context.Context, string, []driver.NamedValue) { // Closest caller in the stack with package not equal to listed and to "database/sql". caller := dbwrap.Caller(skipPackages...) diff --git a/debug/mux.go b/debug/mux.go index 30d8ac2..dc54ab6 100644 --- a/debug/mux.go +++ b/debug/mux.go @@ -29,8 +29,9 @@ func NewMux(prefix string) *Mux { r := &Mux{Prefix: prefix} r.Mux = debugRouter - r.Get("/", func(w http.ResponseWriter, req *http.Request) { + r.Get("/", func(w http.ResponseWriter, _ *http.Request) { w.Header().Set("Content-Type", "text/html; charset=utf8") + _, err := w.Write(r.body) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) diff --git a/debug/zpages/mux.go b/debug/zpages/mux.go index 63bb55f..feab2ad 100644 --- a/debug/zpages/mux.go +++ b/debug/zpages/mux.go @@ -76,6 +76,7 @@ func Mux(prefix string, traceToURL func(traceID string) string) http.Handler { // hijacking css if req.RequestURI == prefix+"/public/opencensus.css" { rw.Header().Set("Content-Type", "text/css; charset=utf-8") + _, err := rw.Write([]byte(css)) if err != nil { panic(err) diff --git a/go.mod b/go.mod index 0f1d186..833728b 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/bool64/brick -go 1.18 +go 1.21 require ( contrib.go.opencensus.io/exporter/jaeger v0.2.1 @@ -10,31 +10,32 @@ require ( github.com/bool64/cache v0.4.7 github.com/bool64/ctxd v1.2.1 github.com/bool64/dbwrap v0.1.3 - github.com/bool64/dev v0.2.33 + github.com/bool64/dev v0.2.34 github.com/bool64/godogx v0.1.1 github.com/bool64/httpmock v0.1.13 - github.com/bool64/logz v1.2.0 + github.com/bool64/logz v1.3.0 github.com/bool64/prom-stats v0.1.3 github.com/bool64/shared v0.1.5 github.com/bool64/sqluct v0.2.1 github.com/bool64/stats v0.2.2 github.com/bool64/zapctxd v1.1.0 - github.com/cucumber/godog v0.13.0 - github.com/go-chi/chi/v5 v5.0.11 + github.com/cucumber/godog v0.14.0 + github.com/go-chi/chi/v5 v5.0.12 github.com/godogx/allure v0.2.3 github.com/godogx/dbsteps v0.1.2 - github.com/godogx/httpsteps v0.2.13 + github.com/godogx/httpsteps v0.2.14 + github.com/godogx/vars v0.1.7 github.com/jmoiron/sqlx v1.3.5 github.com/joho/godotenv v1.5.1 github.com/kelseyhightower/envconfig v1.4.0 - github.com/prometheus/client_golang v1.17.0 + github.com/prometheus/client_golang v1.18.0 github.com/santhosh-tekuri/jsonschema/v3 v3.1.0 github.com/stretchr/testify v1.8.4 github.com/swaggest/assertjson v1.9.0 github.com/swaggest/jsonschema-go v0.3.64 - github.com/swaggest/openapi-go v0.2.44 - github.com/swaggest/rest v0.2.60 - github.com/swaggest/swgui v1.7.5 + github.com/swaggest/openapi-go v0.2.45 + github.com/swaggest/rest v0.2.61 + github.com/swaggest/swgui v1.8.0 github.com/swaggest/usecase v1.3.1 github.com/vearutop/gooselite v0.1.1 go.opencensus.io v0.24.0 @@ -51,7 +52,6 @@ require ( github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/godogx/resource v0.1.1 // indirect - github.com/godogx/vars v0.1.7 // indirect github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect @@ -62,12 +62,12 @@ require ( github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect - github.com/prometheus/common v0.44.0 // indirect - github.com/prometheus/procfs v0.11.1 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.45.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/prometheus/statsd_exporter v0.22.8 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/shurcooL/httpgzip v0.0.0-20190720172056-320755c1c1b0 // indirect @@ -76,7 +76,7 @@ require ( github.com/swaggest/refl v1.3.0 // indirect github.com/uber/jaeger-client-go v2.25.0+incompatible // indirect github.com/vearutop/dynhist-go v1.2.3 // indirect - github.com/vearutop/lograte v1.1.2 // indirect + github.com/vearutop/lograte v1.1.3 // indirect github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 // indirect github.com/yosuke-furukawa/json5 v0.1.2-0.20201207051438-cf7bb3f354ff // indirect github.com/yudai/gojsondiff v1.0.0 // indirect diff --git a/go.sum b/go.sum index e5a769a..ec2a08f 100644 --- a/go.sum +++ b/go.sum @@ -71,14 +71,14 @@ github.com/bool64/dev v0.1.35/go.mod h1:cTHiTDNc8EewrQPy3p1obNilpMpdmlUesDkFTF2z github.com/bool64/dev v0.1.38/go.mod h1:cTHiTDNc8EewrQPy3p1obNilpMpdmlUesDkFTF2zRWU= github.com/bool64/dev v0.2.4/go.mod h1:cTHiTDNc8EewrQPy3p1obNilpMpdmlUesDkFTF2zRWU= github.com/bool64/dev v0.2.25/go.mod h1:iJbh1y/HkunEPhgebWRNcs8wfGq7sjvJ6W5iabL8ACg= -github.com/bool64/dev v0.2.33 h1:ETAcSa8H9w4talcCdSQCCnLX7PMHmuxdLcDl6TpSDj4= -github.com/bool64/dev v0.2.33/go.mod h1:iJbh1y/HkunEPhgebWRNcs8wfGq7sjvJ6W5iabL8ACg= +github.com/bool64/dev v0.2.34 h1:P9n315P8LdpxusnYQ0X7MP1CZXwBK5ae5RZrd+GdSZE= +github.com/bool64/dev v0.2.34/go.mod h1:iJbh1y/HkunEPhgebWRNcs8wfGq7sjvJ6W5iabL8ACg= github.com/bool64/godogx v0.1.1 h1:iAwnix6HQgl7A5BAJ4mMvWbhR721GHNxeAAKFEjrWO4= github.com/bool64/godogx v0.1.1/go.mod h1:qydmzRfimgYTmNEvpnc+SJNkmdjpPoPavYQoSn2rjoY= github.com/bool64/httpmock v0.1.13 h1:3QpRXQ5kwHLW8xnVT8+Ug7VS6RerhdEFV+RWYC61aVo= github.com/bool64/httpmock v0.1.13/go.mod h1:YMTLaypQ3o5DAx78eA/kDRSLec0f+42sLMDmHdmeY+E= -github.com/bool64/logz v1.2.0 h1:xZJTzvc7a9fZMkkcXJ+IS+i8c3G/BfeWmvdWVeJHEjw= -github.com/bool64/logz v1.2.0/go.mod h1:+5oJBewzCDSHk8cs2lFCrwmjgoqdsbWh3m4vSNWlpHo= +github.com/bool64/logz v1.3.0 h1:PEoufouvteNXQ55V616HsBeLzcF11GgNAiXu4aH0luw= +github.com/bool64/logz v1.3.0/go.mod h1:Rhs8v7wl1UTG+Dp1iUmC3I/olPXSoIZO7lsefn5Awog= github.com/bool64/prom-stats v0.1.3 h1:ZmqTpW1CWFO1zO1z2Fa2GNScEYLAQLc7uoYOcw54he8= github.com/bool64/prom-stats v0.1.3/go.mod h1:uAydOHn7rCblxGm4TkhSAFjTOsTgduxMIVB8yh8Ja7I= github.com/bool64/shared v0.1.5 h1:fp3eUhBsrSjNCQPcSdQqZxxh9bBwrYiZ+zOKFkM0/2E= @@ -113,8 +113,8 @@ github.com/cucumber/gherkin-go/v19 v19.0.3/go.mod h1:jY/NP6jUtRSArQQJ5h1FXOUgk5f github.com/cucumber/gherkin/go/v26 v26.2.0 h1:EgIjePLWiPeslwIWmNQ3XHcypPsWAHoMCz/YEBKP4GI= github.com/cucumber/gherkin/go/v26 v26.2.0/go.mod h1:t2GAPnB8maCT4lkHL99BDCVNzCh1d7dBhCLt150Nr/0= github.com/cucumber/godog v0.12.0/go.mod h1:u6SD7IXC49dLpPN35kal0oYEjsXZWee4pW6Tm9t5pIc= -github.com/cucumber/godog v0.13.0 h1:KvX9kNWmAJwp882HmObGOyBbNUP5SXQ+SDLNajsuV7A= -github.com/cucumber/godog v0.13.0/go.mod h1:FX3rzIDybWABU4kuIXLZ/qtqEe1Ac5RdXmqvACJOces= +github.com/cucumber/godog v0.14.0 h1:h/K4t7XBxsFBF+UJEahNqJ1/2VHVepRXCSq3WWWnehs= +github.com/cucumber/godog v0.14.0/go.mod h1:FX3rzIDybWABU4kuIXLZ/qtqEe1Ac5RdXmqvACJOces= github.com/cucumber/messages-go/v16 v16.0.0/go.mod h1:EJcyR5Mm5ZuDsKJnT2N9KRnBK30BGjtYotDKpwQ0v6g= github.com/cucumber/messages-go/v16 v16.0.1/go.mod h1:EJcyR5Mm5ZuDsKJnT2N9KRnBK30BGjtYotDKpwQ0v6g= github.com/cucumber/messages/go/v21 v21.0.1 h1:wzA0LxwjlWQYZd32VTlAVDTkW6inOFmSM+RuOwHZiMI= @@ -133,8 +133,8 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-chi/chi/v5 v5.0.11 h1:BnpYbFZ3T3S1WMpD79r7R5ThWX40TaFB7L31Y8xqSwA= -github.com/go-chi/chi/v5 v5.0.11/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s= +github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -156,8 +156,8 @@ github.com/godogx/allure v0.2.3 h1:xGJsVfsSS/a5sUvPYV2r2tmVS2SBhI95eFvM0Rbn9i8= github.com/godogx/allure v0.2.3/go.mod h1:I4RcTTou83WI8SucDq3znW9/PxA2j1JPkUhmFYRGdLI= github.com/godogx/dbsteps v0.1.2 h1:MLpxpqCxXZrdvA/r8o8M+xKjrpmb+RTye1YWkvATFyk= github.com/godogx/dbsteps v0.1.2/go.mod h1:kY6x9odRDEfymsLJ/O3VnX4LJBa23PhTdKjJzJgnMJM= -github.com/godogx/httpsteps v0.2.13 h1:wre0aOiXUQG7zBoTVwCDKboebSzhiqg20jUQShwsrbw= -github.com/godogx/httpsteps v0.2.13/go.mod h1:EPAbFvh7+18PtMUkXqf6fF0oCn06ai/SfzaFYpGWG6M= +github.com/godogx/httpsteps v0.2.14 h1:v6erZ77apenCxmNTy9vabHOT0kVt8hlm3Bad8KxtvtQ= +github.com/godogx/httpsteps v0.2.14/go.mod h1:kNEHfLIhWkTGp5cVa5mAP3XVZwSafndNQXSCn+tqi10= github.com/godogx/resource v0.1.1 h1:1vbznIn1mUCP+9TzJp9v8QKm54kAMTe38CBLnFBk0j8= github.com/godogx/resource v0.1.1/go.mod h1:OYaiyttuq2KaiJp2yOMekyOFjZJFz3w/D7WPioUVC4Y= github.com/godogx/vars v0.1.7 h1:ddsLouhCSr21k7hqc7Az1GrOVMLMZ/B5uUq7LaNGvvw= @@ -316,8 +316,8 @@ github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA= github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -355,14 +355,14 @@ github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqr github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= -github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= -github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -371,8 +371,8 @@ github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9 github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -380,8 +380,8 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= -github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= github.com/prometheus/statsd_exporter v0.22.8 h1:Qo2D9ZzaQG+id9i5NYNGmbf1aa/KxKbB9aKfMS+Yib0= github.com/prometheus/statsd_exporter v0.22.8/go.mod h1:/DzwbTEaFTE0Ojz5PqcSk6+PFHOPWGxdXVr6yC8eFOM= @@ -439,14 +439,16 @@ github.com/swaggest/form/v5 v5.1.1 h1:ct6/rOQBGrqWUQ0FUv3vW5sHvTUb31AwTUWj947N6c github.com/swaggest/form/v5 v5.1.1/go.mod h1:X1hraaoONee20PMnGNLQpO32f9zbQ0Czfm7iZThuEKg= github.com/swaggest/jsonschema-go v0.3.64 h1:HyB41fkA4XP0BZkqWfGap5i2JtRHQGXG/21dGDPbyLM= github.com/swaggest/jsonschema-go v0.3.64/go.mod h1:DYuKqdpms/edvywsX6p1zHXCZkdwB28wRaBdFCe3Duw= -github.com/swaggest/openapi-go v0.2.44 h1:6X9HQpXguD1sZtNtF7KfrwzReWX9IhLUAHbtd9drtyw= -github.com/swaggest/openapi-go v0.2.44/go.mod h1:/ykzNtS1ZO7X43OnEtyisMktxCiawQLyGd08rkjV68U= +github.com/swaggest/openapi-go v0.2.45 h1:LOMAEleKVLg4E86lSCyioJK7ltjWRx50AaP4LZIbJ+Q= +github.com/swaggest/openapi-go v0.2.45/go.mod h1:/ykzNtS1ZO7X43OnEtyisMktxCiawQLyGd08rkjV68U= github.com/swaggest/refl v1.3.0 h1:PEUWIku+ZznYfsoyheF97ypSduvMApYyGkYF3nabS0I= github.com/swaggest/refl v1.3.0/go.mod h1:3Ujvbmh1pfSbDYjC6JGG7nMgPvpG0ehQL4iNonnLNbg= -github.com/swaggest/rest v0.2.60 h1:1+L0wx7ZVw7zgOoG5jV95uYTyyPBY514yVlDFECgPzA= -github.com/swaggest/rest v0.2.60/go.mod h1:nQGcwz5pD3LGxMXAz0swBTSFHxAWgAh3QnMh7Q4lRvo= +github.com/swaggest/rest v0.2.61 h1:K2cc3yGTX5i6dkxszS8lH9DmRlqDRl2XWaRxxBpP/Jk= +github.com/swaggest/rest v0.2.61/go.mod h1:nQGcwz5pD3LGxMXAz0swBTSFHxAWgAh3QnMh7Q4lRvo= github.com/swaggest/swgui v1.7.5 h1:Vvq2WfKuXYkP35PdUi2r4+UwGsw4ttDzzLAqFmcmYdk= github.com/swaggest/swgui v1.7.5/go.mod h1:YBaAVAwS3ndfvdtW8A4yWDJpge+W57y+8kW+f/DqZtU= +github.com/swaggest/swgui v1.8.0 h1:dPu8TsYIOraaObAkyNdoiLI8mu7nOqQ6SU7HOv254rM= +github.com/swaggest/swgui v1.8.0/go.mod h1:YBaAVAwS3ndfvdtW8A4yWDJpge+W57y+8kW+f/DqZtU= github.com/swaggest/usecase v1.3.1 h1:JdKV30MTSsDxAXxkldLNcEn8O2uf565khyo6gr5sS+w= github.com/swaggest/usecase v1.3.1/go.mod h1:cae3lDd5VDmM36OQcOOOdAlEDg40TiQYIp99S9ejWqA= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -456,8 +458,8 @@ github.com/vearutop/dynhist-go v1.2.3 h1:EIMWszSDm6b7zmqySgx8zW2qNctE3IXUJggGlDF github.com/vearutop/dynhist-go v1.2.3/go.mod h1:liiiYiwAi8ixC3DbkxooEhASTF6ysJSXy+piCrBtxEg= github.com/vearutop/gooselite v0.1.1 h1:C2CoI2Attj63yNsaEug9OVPRM5eeJlzqlZIbq4Za+Ok= github.com/vearutop/gooselite v0.1.1/go.mod h1:7DgIIzvRsv10pvQrCt4dV4pOR9OBGw+n//TViMeLLIo= -github.com/vearutop/lograte v1.1.2 h1:ABIDDo+pvuB7YeATQmAkwitI4adM4UL1jOSfC96VrBE= -github.com/vearutop/lograte v1.1.2/go.mod h1:CnWSKQIOdRxlRWfdVC3sR+Fae1YX/Us3N6WmBip75mA= +github.com/vearutop/lograte v1.1.3 h1:wgZege2tbCCEYHORI+vZbSJcmayd2HTfkfGnOBrOpYw= +github.com/vearutop/lograte v1.1.3/go.mod h1:toX+le7NyZBmZ0Kw1ox78UOiDldXAkul2UEmgVKL5eQ= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= diff --git a/init_test.go b/init_test.go index 57ec20a..ff44852 100644 --- a/init_test.go +++ b/init_test.go @@ -55,7 +55,7 @@ func TestNewBaseLocator(t *testing.T) { r := brick.NewBaseWebService(l) serviceURLPrefix := "/" + cfg.ServiceName - uc := usecase.NewIOI(nil, nil, func(ctx context.Context, input, output interface{}) error { + uc := usecase.NewIOI(nil, nil, func(_ context.Context, _, _ interface{}) error { panic("oops") }) diff --git a/log/http.go b/log/http.go index fbaf7bc..e1e36fc 100644 --- a/log/http.go +++ b/log/http.go @@ -137,7 +137,9 @@ func (mw HTTPRecover) Middleware() func(handler http.Handler) http.Handler { w := middleware.NewWrapResponseWriter(rw, r.ProtoMajor) start := time.Now() + next.ServeHTTP(w, r) + elapsed := time.Since(start) ctx = ctxd.AddFields(ctx, diff --git a/log/usecase.go b/log/usecase.go index c25d361..e8b6551 100644 --- a/log/usecase.go +++ b/log/usecase.go @@ -19,6 +19,7 @@ func UsecaseErrors(logger ctxd.Logger) usecase.Middleware { name string ) + if usecase.As(u, &withName) { name = withName.Name() } diff --git a/opencensus/span.go b/opencensus/span.go index 07014f9..a17ce6d 100644 --- a/opencensus/span.go +++ b/opencensus/span.go @@ -20,10 +20,10 @@ import ( // ) // defer finish(&err) func AddSpan(ctx context.Context, attributes ...trace.Attribute) (context.Context, func(*error)) { - ctx, span := trace.StartSpan(ctx, runtime.CallerFunc(2)) + ctx, span := trace.StartSpan(ctx, runtime.CallerFunc(2)) //nolint:spancheck span.AddAttributes(attributes...) - return ctx, func(err *error) { + return ctx, func(err *error) { //nolint:spancheck if err != nil && *err != nil { e := *err st := status.Unknown diff --git a/test/feature.go b/test/feature.go index cd9f8cd..8da9ac3 100644 --- a/test/feature.go +++ b/test/feature.go @@ -15,6 +15,7 @@ import ( "github.com/godogx/allure" "github.com/godogx/dbsteps" "github.com/godogx/httpsteps" + "github.com/godogx/vars" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -22,6 +23,7 @@ import ( // Context is a test context for feature tests. type Context struct { Vars *shared.Vars + VS *vars.Steps Local *httpsteps.LocalClient External *httpsteps.ExternalServer Database *dbsteps.Manager @@ -33,7 +35,8 @@ type Context struct { func newContext(t *testing.T) *Context { t.Helper() - vars := &shared.Vars{} + vs := &vars.Steps{} + vs.JSONComparer.Vars = &shared.Vars{} tc := &Context{} tc.Local = httpsteps.NewLocalClient("", func(client *httpmock.Client) { @@ -41,13 +44,16 @@ func newContext(t *testing.T) *Context { require.NoError(t, os.WriteFile("_last_mismatch.json", data, 0o600)) } }) - tc.Local.VS.JSONComparer.Vars = vars + tc.Local.VS = vs tc.External = httpsteps.NewExternalServer() - tc.External.VS.JSONComparer.Vars = vars + tc.External.VS = vs tc.Database = dbsteps.NewManager() - tc.Database.Vars = vars + tc.Database.Vars = vs.JSONComparer.Vars + + tc.VS = vs + tc.Vars = vs.JSONComparer.Vars return tc } @@ -98,6 +104,7 @@ func RunFeatures(t *testing.T, envPrefix string, cfg brick.WithBaseConfig, init tc.Local.RegisterSteps(s) tc.External.RegisterSteps(s) tc.Database.RegisterSteps(s) + tc.VS.Register(s) if tc.ScenarioInitializer != nil { tc.ScenarioInitializer(s) diff --git a/usecase/stats.go b/usecase/stats.go index 205fb9e..afdb22f 100644 --- a/usecase/stats.go +++ b/usecase/stats.go @@ -22,6 +22,7 @@ func StatsMiddleware(tracker stats.Tracker) usecase.Middleware { name string ) + if usecase.As(u, &withName) { name = withName.Name() }