| [short] skip |
| |
| # Test file |
| ! go test p1_test.go |
| stderr 'Logf format %d' |
| go test -vet=off |
| stdout '^ok' |
| |
| # Non-test file |
| ! go test p1.go |
| stderr 'Printf format %d' |
| go test -x -vet=shift p1.go |
| stderr '[\\/]vet.*-shift' |
| stdout '\[no test files\]' |
| go test -vet=off p1.go |
| ! stderr '[\\/]vet.*-shift' |
| stdout '\[no test files\]' |
| |
| # Test issue #22890 |
| go test m/vetcycle |
| stdout 'm/vetcycle.*\[no test files\]' |
| |
| # Test with ... |
| ! go test ./vetfail/... |
| stderr 'Printf format %d' |
| stdout 'ok\s+m/vetfail/p2' |
| |
| # Check there's no diagnosis of a bad build constraint in vetxonly mode. |
| # Use -a so that we need to recompute the vet-specific export data for |
| # vetfail/p1. |
| go test -a m/vetfail/p2 |
| ! stderr 'invalid.*constraint' |
| |
| -- go.mod -- |
| module m |
| |
| go 1.16 |
| -- p1_test.go -- |
| package p |
| |
| import "testing" |
| |
| func Test(t *testing.T) { |
| t.Logf("%d") // oops |
| } |
| -- p1.go -- |
| package p |
| |
| import "fmt" |
| |
| func F() { |
| fmt.Printf("%d") // oops |
| } |
| -- vetcycle/p.go -- |
| package p |
| |
| type ( |
| _ interface{ m(B1) } |
| A1 interface{ a(D1) } |
| B1 interface{ A1 } |
| C1 interface { |
| B1 /* ERROR issue #18395 */ |
| } |
| D1 interface{ C1 } |
| ) |
| |
| var _ A1 = C1 /* ERROR cannot use C1 */ (nil) |
| -- vetfail/p1/p1.go -- |
| // +build !foo-bar |
| |
| package p1 |
| |
| import "fmt" |
| |
| func F() { |
| fmt.Printf("%d", "hello") // causes vet error |
| } |
| -- vetfail/p2/p2.go -- |
| package p2 |
| |
| import _ "m/vetfail/p1" |
| |
| func F() { |
| } |
| -- vetfail/p2/p2_test.go -- |
| package p2 |
| |
| import "testing" |
| |
| func TestF(t *testing.T) { |
| F() |
| } |