diff --git a/.github/workflows/generator.yaml b/.github/workflows/generator.yaml index df0fd1cfb..da8a27237 100644 --- a/.github/workflows/generator.yaml +++ b/.github/workflows/generator.yaml @@ -23,59 +23,3 @@ jobs: run: go version - run: go mod tidy - run: go test ./... - - lint: - runs-on: ubuntu-24.04 - strategy: - matrix: - go-version: [ '1.23' ] - defaults: - run: - working-directory: generator - steps: - - uses: actions/checkout@v4 - - name: Setup Go ${{ matrix.go-version }} - uses: actions/setup-go@v5 - with: - go-version: ${{ matrix.go-version }} - cache-dependency-path: | - generator/go.sum - - name: Display Go version - run: go version - - run: go mod tidy - - run: go fmt ./... - - run: go vet ./... - - run: | - # unparam does not seem to have releases. Using `latest` sounds risky. - go get mvdan.cc/unparam@57a3b4290ba3724102fdbbe72314f2b782d4bef5 - go run mvdan.cc/unparam ./... - - name: Run `staticcheck` - uses: dominikh/staticcheck-action@v1.3.0 - with: - install-go: false - cache-key: ${{ matrix.go-version }} - working-directory: generator - - name: Detect Changes - run: git diff --exit-code - - vuln: - runs-on: ubuntu-24.04 - strategy: - matrix: - go-version: [ '1.23' ] - defaults: - run: - working-directory: generator - steps: - - uses: actions/checkout@v4 - - name: Setup Go ${{ matrix.go-version }} - uses: actions/setup-go@v5 - with: - go-version: ${{ matrix.go-version }} - cache-dependency-path: | - generator/go.sum - - name: Display Go version - run: go version - - run: | - go get golang.org/x/vuln/cmd/govulncheck@v1.1.3 - go run golang.org/x/vuln/cmd/govulncheck ./... diff --git a/generator/all_test.go b/generator/all_test.go new file mode 100644 index 000000000..3874b82fe --- /dev/null +++ b/generator/all_test.go @@ -0,0 +1,65 @@ +// Copyright 2022 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import ( + "errors" + "os/exec" + "testing" + + "mvdan.cc/unparam/check" +) + +func TestStaticCheck(t *testing.T) { + rungo(t, "run", "honnef.co/go/tools/cmd/staticcheck@v0.5.1", "./...") +} + +func TestUnparam(t *testing.T) { + warns, err := check.UnusedParams(false, false, false, "./...") + if err != nil { + t.Fatalf("check.UnusedParams: %v", err) + } + for _, warn := range warns { + t.Error(warn) + } +} + +func TestVet(t *testing.T) { + rungo(t, "vet", "-all", "./...") +} + +func TestGoModTidy(t *testing.T) { + rungo(t, "mod", "tidy") +} + +func TestGoFmt(t *testing.T) { + rungo(t, "fmt") +} + +func TestGovulncheck(t *testing.T) { + rungo(t, "run", "golang.org/x/vuln/cmd/govulncheck@v1.1.3", "./...") +} + +func rungo(t *testing.T, args ...string) { + t.Helper() + + cmd := exec.Command("go", args...) + if output, err := cmd.CombinedOutput(); err != nil { + if ee := (*exec.ExitError)(nil); errors.As(err, &ee) && len(ee.Stderr) > 0 { + t.Fatalf("%v: %v\n%s", cmd, err, ee.Stderr) + } + t.Fatalf("%v: %v\n%s", cmd, err, output) + } +} diff --git a/generator/go.mod b/generator/go.mod index f51ee5eef..750894149 100644 --- a/generator/go.mod +++ b/generator/go.mod @@ -8,4 +8,11 @@ require ( github.com/iancoleman/strcase v0.3.0 google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 google.golang.org/protobuf v1.35.1 + mvdan.cc/unparam v0.0.0-20240917084806-57a3b4290ba3 +) + +require ( + golang.org/x/mod v0.21.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/tools v0.25.0 // indirect ) diff --git a/generator/go.sum b/generator/go.sum index 8dfef8817..c0786913f 100644 --- a/generator/go.sum +++ b/generator/go.sum @@ -4,7 +4,15 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= +golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 h1:2oV8dfuIkM1Ti7DwXc0BJfnwr9csz4TDXI9EmiI+Rbw= google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38/go.mod h1:vuAjtvlwkDKF6L1GQ0SokiRLCGFfeBUXWr/aFFkHACc= google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +mvdan.cc/unparam v0.0.0-20240917084806-57a3b4290ba3 h1:YkmTN1n5U60NM02j7TCSWRlW3fqNiuXe/eVXf0dLFN8= +mvdan.cc/unparam v0.0.0-20240917084806-57a3b4290ba3/go.mod h1:z5yboO1sP1Q9pcfvS597TpfbNXQjphDlkCJHzt13ybc=