diff --git a/.github/workflows/code-health-tools.yml b/.github/workflows/code-health-tools.yml index c278b62c65..022be4fa0d 100644 --- a/.github/workflows/code-health-tools.yml +++ b/.github/workflows/code-health-tools.yml @@ -63,7 +63,7 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 with: - version: v1.58.1 + version: v1.60.3 working-directory: tools/cli - name: Checkout GitHub actions uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 diff --git a/tools/.tool-versions b/tools/.tool-versions index 2f1d3539f9..1a59aeb0b8 100644 --- a/tools/.tool-versions +++ b/tools/.tool-versions @@ -1 +1 @@ -golang 1.22.6 +golang 1.23.0 diff --git a/tools/cli/.golangci.yml b/tools/cli/.golangci.yml index a456da2305..a7fac958f7 100644 --- a/tools/cli/.golangci.yml +++ b/tools/cli/.golangci.yml @@ -72,7 +72,7 @@ linters: - nakedret - nolintlint - rowserrcheck - - exportloopref + - copyloopvar - staticcheck - stylecheck - typecheck diff --git a/tools/cli/Makefile b/tools/cli/Makefile index 8eb7bb956d..01d6eeeb6f 100644 --- a/tools/cli/Makefile +++ b/tools/cli/Makefile @@ -1,6 +1,6 @@ # A Self-Documenting Makefile: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html -GOLANGCI_VERSION=v1.58.1 +GOLANGCI_VERSION=v1.60.3 SOURCE_FILES?=./cmd BINARY_NAME=foascli VERSION=v0.0.1 diff --git a/tools/cli/go.mod b/tools/cli/go.mod index dd6f938efb..6f1c38c05a 100644 --- a/tools/cli/go.mod +++ b/tools/cli/go.mod @@ -1,21 +1,23 @@ module github.com/mongodb/openapi/tools/cli -go 1.22.6 +go 1.23 + +toolchain go1.23.0 require ( github.com/getkin/kin-openapi v0.127.0 github.com/spf13/afero v1.11.0 github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.9.0 - github.com/tufin/oasdiff v1.10.23 + github.com/tufin/oasdiff v1.10.24 go.uber.org/mock v0.4.0 gopkg.in/yaml.v3 v3.0.1 ) require ( - cloud.google.com/go v0.115.0 // indirect + cloud.google.com/go v0.115.1 // indirect github.com/TwiN/go-color v1.4.1 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/swag v0.23.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -24,9 +26,9 @@ require ( github.com/mailru/easyjson v0.7.7 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/perimeterx/marshmallow v1.1.5 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/tidwall/gjson v1.17.1 // indirect + github.com/tidwall/gjson v1.17.3 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect @@ -34,6 +36,6 @@ require ( github.com/wI2L/jsondiff v0.6.0 // indirect github.com/yargevad/filepathx v1.0.0 // indirect github.com/yuin/goldmark v1.7.4 // indirect - golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 // indirect + golang.org/x/text v0.17.0 // indirect ) diff --git a/tools/cli/go.sum b/tools/cli/go.sum index 0e85e45b10..c010a2f4b9 100644 --- a/tools/cli/go.sum +++ b/tools/cli/go.sum @@ -1,10 +1,10 @@ -cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= -cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= +cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= +cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= github.com/TwiN/go-color v1.4.1 h1:mqG0P/KBgHKVqmtL5ye7K0/Gr4l6hTksPgTgMk3mUzc= github.com/TwiN/go-color v1.4.1/go.mod h1:WcPf/jtiW95WBIsEeY1Lc/b8aaWoiqQpu5cf8WFxu+s= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/getkin/kin-openapi v0.127.0 h1:Mghqi3Dhryf3F8vR370nN67pAERW+3a95vomb3MAREY= github.com/getkin/kin-openapi v0.127.0/go.mod h1:OZrfXzUfGrNbsKj+xmFBx6E5c6yH3At/tAKSc2UszXM= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= @@ -31,8 +31,8 @@ github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -45,8 +45,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= -github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= +github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -54,8 +54,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tufin/oasdiff v1.10.23 h1:kKYOaSmqssbfJbV2AZzkV0c/SQg5LTQaOKifyJYOUHA= -github.com/tufin/oasdiff v1.10.23/go.mod h1:sxBFlWx1ueaawnweGY3A769iSM3o0N9HhI6QGNeoW/c= +github.com/tufin/oasdiff v1.10.24 h1:r4C8cAQfJe6ICWGPIfWtS7uHDinrN1abhf2jSh78ki0= +github.com/tufin/oasdiff v1.10.24/go.mod h1:2jwb6iX/eERzBfMBhWNAYB85oyJCLk6uY1WukxZG26E= github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/wI2L/jsondiff v0.6.0 h1:zrsH3FbfVa3JO9llxrcDy/XLkYPLgoMX6Mz3T2PP2AI= @@ -66,10 +66,10 @@ github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 h1:yixxcjnhBmY0nkL253HFVIm0JsFHwrHdT3Yh6szTnfY= -golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 h1:kx6Ds3MlpiUHKj7syVnbp57++8WpuKPcR5yjLBjvLEA= +golang.org/x/exp v0.0.0-20240823005443-9b4947da3948/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/tools/cli/internal/changelog/merge_test.go b/tools/cli/internal/changelog/merge_test.go index 496c2aab74..6a9d59f6fe 100644 --- a/tools/cli/internal/changelog/merge_test.go +++ b/tools/cli/internal/changelog/merge_test.go @@ -79,9 +79,9 @@ func TestMergeChangelogOneChange(t *testing.T) { changelog, err := changelogStruct.mergeChangelog(changeType, changes, endpointsConfig) require.NoError(t, err) - assert.Len(t, changelog, 2, fmt.Sprintf("merged changelog should have 2 entries, got %d", len(changelog))) + assert.Len(t, changelog, 2, "merged changelog should have 2 entries, got %d", len(changelog)) assert.Equal(t, changelog[0].Date, runDate, "merged changelog should have entries for the run date") - assert.Equal(t, changelog[1].Date, lastChangelogRunDate, fmt.Sprintf("merged changelog should have entries for the %s", lastChangelogRunDate)) + assert.Equal(t, changelog[1].Date, lastChangelogRunDate, "merged changelog should have entries for the %s", lastChangelogRunDate) paths := changelog[0].Paths assert.Len(t, paths, 1, "latest changelog entry should refer to only one endpoint") @@ -184,9 +184,9 @@ func TestMergeChangelogTwoVersionsNoDeprecations(t *testing.T) { changelog, err = changelogStruct.mergeChangelog(changeTypeSecondVersion, changesSecondVersion, endpointsConfig) require.NoError(t, err) - require.Len(t, changelog, 2, fmt.Sprintf("merged changelog should have 2 entries, got %d", len(changelog))) + require.Len(t, changelog, 2, "merged changelog should have 2 entries, got %d", len(changelog)) assert.Equal(t, changelog[0].Date, runDate, "merged changelog should have entries for the run date") - assert.Equal(t, changelog[1].Date, lastChangelogRunDate, fmt.Sprintf("merged changelog should have entries for the %s", lastChangelogRunDate)) + assert.Equal(t, changelog[1].Date, lastChangelogRunDate, "merged changelog should have entries for the %s", lastChangelogRunDate) paths := changelog[0].Paths assert.Len(t, paths, 1, "latest changelog entry should refer to only one endpoint") @@ -288,7 +288,7 @@ func TestMergeChangelogAddTwoEndpoints(t *testing.T) { // assert assert.Equal(t, changelog[0].Date, runDate, "merged changelog should have entries for the run date") - assert.Equal(t, changelog[1].Date, lastChangelogRunDate, fmt.Sprintf("merged changelog should have entries for the %s", lastChangelogRunDate)) + assert.Equal(t, changelog[1].Date, lastChangelogRunDate, "merged changelog should have entries for the %s", lastChangelogRunDate) latestChangelogEntry := changelog[0] newPaths := latestChangelogEntry.Paths @@ -561,7 +561,7 @@ func TestMergeChangelogTwoVersionsWithDeprecations(t *testing.T) { changelog, err = changelogStruct.mergeChangelog(changeTypeSecondVersion, changesSecondVersion, endpointsConfig) require.NoError(t, err) - require.Len(t, changelog, 2, fmt.Sprintf("merged changelog should have 2 entries, got %d", len(changelog))) + require.Len(t, changelog, 2, "merged changelog should have 2 entries, got %d", len(changelog)) assert.Equal(t, changelog[0].Date, runDate) assert.Equal(t, changelog[1].Date, lastChangelogRunDate) @@ -687,7 +687,7 @@ func TestMergeChangelogWithDeprecations(t *testing.T) { changelog, err = changelogStruct.mergeChangelog(changeTypeSecondVersion, changesSecondVersion, endpointsConfig) require.NoError(t, err) - require.Len(t, changelog, 2, fmt.Sprintf("merged changelog should have 2 entries, got %d", len(changelog))) + require.Len(t, changelog, 2, "merged changelog should have 2 entries, got %d", len(changelog)) latestChangelogEntry := changelog[0] require.Equal(t, runDate, latestChangelogEntry.Date) diff --git a/tools/cli/internal/openapi/oasdiff_test.go b/tools/cli/internal/openapi/oasdiff_test.go index 8ce7b59856..18f7a3a960 100644 --- a/tools/cli/internal/openapi/oasdiff_test.go +++ b/tools/cli/internal/openapi/oasdiff_test.go @@ -126,7 +126,6 @@ func TestOasDiff_mergePaths(t *testing.T) { } for _, tc := range testCases { - tc := tc // https://gist.github.com/posener/92a55c4cd441fc5e5e85f27bca008721#what-happened t.Run(tc.name, func(t *testing.T) { t.Parallel() o := OasDiff{ @@ -327,7 +326,6 @@ func TestOasDiff_mergeTags(t *testing.T) { } for _, tc := range testCases { - tc := tc // https://gist.github.com/posener/92a55c4cd441fc5e5e85f27bca008721#what-happened t.Run(tc.name, func(t *testing.T) { t.Parallel() o := OasDiff{ @@ -582,7 +580,6 @@ func TestOasDiff_mergeResponses(t *testing.T) { } for _, tc := range testCases { - tc := tc // https://gist.github.com/posener/92a55c4cd441fc5e5e85f27bca008721#what-happened t.Run(tc.name, func(t *testing.T) { t.Parallel() o := OasDiff{ @@ -805,7 +802,6 @@ func TestOasDiff_mergeSchemas(t *testing.T) { } for _, tc := range testCases { - tc := tc // https://gist.github.com/posener/92a55c4cd441fc5e5e85f27bca008721#what-happened t.Run(tc.name, func(t *testing.T) { t.Parallel() o := OasDiff{