1
0
mirror of https://github.com/golang/go synced 2024-11-22 09:04:42 -07:00

cmd/go/internal/test: add 'tests' vet check to 'go test' suite

The tests analyser reports structural problems in test
declarations. Presumably most of these would be caught by
go test itself, which compiles and runs (some subset of) the
tests, but Benchmark and Fuzz functions are executed less
frequently and may benefit more from static checks.

Also, reflect the change in go test help message.

+ release note

Fixes golang/go#44251

Change-Id: If5b9dee6d18fa0bc4de7f5f5f549eddeae953fc2
Reviewed-on: https://go-review.googlesource.com/c/go/+/529816
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
This commit is contained in:
Alan Donovan 2023-09-20 14:13:35 -04:00 committed by Gopher Robot
parent 6133c1e4e2
commit f1d60500bc
4 changed files with 15 additions and 5 deletions

View File

@ -10,3 +10,12 @@ or copying the `go` binary.
### Cgo {#cgo} ### Cgo {#cgo}
### Vet
The new `tests` analyzer reports common mistakes in declarations of
tests, fuzzers, benchmarks, and examples in test packages, such as
malformed names, wrong signatures, or examples that document
non-existent identifiers. Some of these mistakes may cause tests not
to run.
This analyzer is among the subset of analyzers that are run by `go test`.

View File

@ -1756,7 +1756,7 @@
// finds any problems, go test reports those and does not run the test // finds any problems, go test reports those and does not run the test
// binary. Only a high-confidence subset of the default go vet checks are // binary. Only a high-confidence subset of the default go vet checks are
// used. That subset is: atomic, bool, buildtags, directive, errorsas, // used. That subset is: atomic, bool, buildtags, directive, errorsas,
// ifaceassert, nilfunc, printf, and stringintconv. You can see // ifaceassert, nilfunc, printf, stringintconv, and tests. You can see
// the documentation for these and other vet tests via "go doc cmd/vet". // the documentation for these and other vet tests via "go doc cmd/vet".
// To disable the running of go vet, use the -vet=off flag. To run all // To disable the running of go vet, use the -vet=off flag. To run all
// checks, use the -vet=all flag. // checks, use the -vet=all flag.

View File

@ -79,7 +79,7 @@ and its test source files to identify significant problems. If go vet
finds any problems, go test reports those and does not run the test finds any problems, go test reports those and does not run the test
binary. Only a high-confidence subset of the default go vet checks are binary. Only a high-confidence subset of the default go vet checks are
used. That subset is: atomic, bool, buildtags, directive, errorsas, used. That subset is: atomic, bool, buildtags, directive, errorsas,
ifaceassert, nilfunc, printf, and stringintconv. You can see ifaceassert, nilfunc, printf, stringintconv, and tests. You can see
the documentation for these and other vet tests via "go doc cmd/vet". the documentation for these and other vet tests via "go doc cmd/vet".
To disable the running of go vet, use the -vet=off flag. To run all To disable the running of go vet, use the -vet=off flag. To run all
checks, use the -vet=all flag. checks, use the -vet=all flag.
@ -667,7 +667,7 @@ var defaultVetFlags = []string{
"-slog", "-slog",
"-stringintconv", "-stringintconv",
// "-structtags", // "-structtags",
// "-tests", "-tests",
// "-unreachable", // "-unreachable",
// "-unsafeptr", // "-unsafeptr",
// "-unusedresult", // "-unusedresult",

View File

@ -1,6 +1,7 @@
# Tests that invalid examples are ignored. # Tests that invalid examples are ignored.
# Verifies golang.org/issue/35284 # Verifies golang.org/issue/35284
go test x_test.go # Disable vet, as 'tests' analyzer objects to surplus parameter.
go test -vet=off x_test.go
-- x_test.go -- -- x_test.go --
package x package x
@ -10,4 +11,4 @@ import "fmt"
func ExampleThisShouldNotHaveAParameter(thisShouldntExist int) { func ExampleThisShouldNotHaveAParameter(thisShouldntExist int) {
fmt.Println("X") fmt.Println("X")
// Output: // Output:
} }