github.com/gwaycc/gometalinter@v3.0.0+incompatible/regressiontests/vet_test.go (about) 1 package regressiontests 2 3 import ( 4 "runtime" 5 "strings" 6 "testing" 7 8 "gotest.tools/fs" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestVet(t *testing.T) { 13 t.Parallel() 14 15 dir := fs.NewDir(t, "test-vet", 16 fs.WithFile("file.go", vetFile("root")), 17 fs.WithFile("file_test.go", vetExternalPackageFile("root_test")), 18 fs.WithDir("sub", 19 fs.WithFile("file.go", vetFile("sub"))), 20 fs.WithDir("excluded", 21 fs.WithFile("file.go", vetFile("excluded")))) 22 defer dir.Remove() 23 24 var expected Issues 25 version := runtime.Version() 26 27 switch { 28 case strings.HasPrefix(version, "go1.8"), strings.HasPrefix(version, "go1.9"): 29 expected = Issues{ 30 {Linter: "vet", Severity: "error", Path: "file.go", Line: 7, Col: 0, Message: "missing argument for Printf(\"%d\"): format reads arg 1, have only 0 args"}, 31 {Linter: "vet", Severity: "error", Path: "file.go", Line: 7, Col: 0, Message: "unreachable code"}, 32 {Linter: "vet", Severity: "error", Path: "file_test.go", Line: 5, Col: 0, Message: "unreachable code"}, 33 {Linter: "vet", Severity: "error", Path: "sub/file.go", Line: 7, Col: 0, Message: "missing argument for Printf(\"%d\"): format reads arg 1, have only 0 args"}, 34 {Linter: "vet", Severity: "error", Path: "sub/file.go", Line: 7, Col: 0, Message: "unreachable code"}, 35 } 36 case strings.HasPrefix(version, "go1.10"): 37 expected = Issues{ 38 {Linter: "vet", Severity: "error", Path: "file.go", Line: 7, Col: 0, Message: "Printf format %d reads arg #1, but call has only 0 args"}, 39 {Linter: "vet", Severity: "error", Path: "file.go", Line: 7, Col: 0, Message: "unreachable code"}, 40 {Linter: "vet", Severity: "error", Path: "file_test.go", Line: 5, Col: 0, Message: "unreachable code"}, 41 {Linter: "vet", Severity: "error", Path: "sub/file.go", Line: 7, Col: 0, Message: "Printf format %d reads arg #1, but call has only 0 args"}, 42 {Linter: "vet", Severity: "error", Path: "sub/file.go", Line: 7, Col: 0, Message: "unreachable code"}, 43 } 44 default: 45 expected = Issues{ 46 {Linter: "vet", Severity: "error", Path: "file.go", Line: 7, Col: 0, Message: "Printf format %d reads arg #1, but call has 0 args"}, 47 {Linter: "vet", Severity: "error", Path: "file.go", Line: 7, Col: 0, Message: "unreachable code"}, 48 {Linter: "vet", Severity: "error", Path: "file_test.go", Line: 5, Col: 0, Message: "unreachable code"}, 49 {Linter: "vet", Severity: "error", Path: "sub/file.go", Line: 7, Col: 0, Message: "Printf format %d reads arg #1, but call has 0 args"}, 50 {Linter: "vet", Severity: "error", Path: "sub/file.go", Line: 7, Col: 0, Message: "unreachable code"}, 51 } 52 } 53 54 actual := RunLinter(t, "vet", dir.Path(), "--skip=excluded") 55 assert.Equal(t, expected, actual) 56 } 57 58 func vetFile(pkg string) string { 59 return `package ` + pkg + ` 60 61 import "fmt" 62 63 func Something() { 64 return 65 fmt.Printf("%d") 66 } 67 ` 68 } 69 70 func vetExternalPackageFile(pkg string) string { 71 return `package ` + pkg + ` 72 73 func Example() { 74 return 75 println("example") 76 } 77 ` 78 }