...
1
2
3
4
5 package unitchecker_test
6
7 import (
8 "os"
9 "os/exec"
10 "runtime"
11 "strings"
12 "testing"
13
14 "golang.org/x/tools/go/analysis/passes/appends"
15 "golang.org/x/tools/go/analysis/passes/asmdecl"
16 "golang.org/x/tools/go/analysis/passes/assign"
17 "golang.org/x/tools/go/analysis/passes/atomic"
18 "golang.org/x/tools/go/analysis/passes/bools"
19 "golang.org/x/tools/go/analysis/passes/buildtag"
20 "golang.org/x/tools/go/analysis/passes/cgocall"
21 "golang.org/x/tools/go/analysis/passes/composite"
22 "golang.org/x/tools/go/analysis/passes/copylock"
23 "golang.org/x/tools/go/analysis/passes/defers"
24 "golang.org/x/tools/go/analysis/passes/directive"
25 "golang.org/x/tools/go/analysis/passes/errorsas"
26 "golang.org/x/tools/go/analysis/passes/framepointer"
27 "golang.org/x/tools/go/analysis/passes/httpresponse"
28 "golang.org/x/tools/go/analysis/passes/ifaceassert"
29 "golang.org/x/tools/go/analysis/passes/loopclosure"
30 "golang.org/x/tools/go/analysis/passes/lostcancel"
31 "golang.org/x/tools/go/analysis/passes/nilfunc"
32 "golang.org/x/tools/go/analysis/passes/printf"
33 "golang.org/x/tools/go/analysis/passes/shift"
34 "golang.org/x/tools/go/analysis/passes/sigchanyzer"
35 "golang.org/x/tools/go/analysis/passes/stdmethods"
36 "golang.org/x/tools/go/analysis/passes/stdversion"
37 "golang.org/x/tools/go/analysis/passes/stringintconv"
38 "golang.org/x/tools/go/analysis/passes/structtag"
39 "golang.org/x/tools/go/analysis/passes/testinggoroutine"
40 "golang.org/x/tools/go/analysis/passes/tests"
41 "golang.org/x/tools/go/analysis/passes/timeformat"
42 "golang.org/x/tools/go/analysis/passes/unmarshal"
43 "golang.org/x/tools/go/analysis/passes/unreachable"
44 "golang.org/x/tools/go/analysis/passes/unusedresult"
45 "golang.org/x/tools/go/analysis/unitchecker"
46 )
47
48
49
50 func vet() {
51 unitchecker.Main(
52 appends.Analyzer,
53 asmdecl.Analyzer,
54 assign.Analyzer,
55 atomic.Analyzer,
56 bools.Analyzer,
57 buildtag.Analyzer,
58 cgocall.Analyzer,
59 composite.Analyzer,
60 copylock.Analyzer,
61 defers.Analyzer,
62 directive.Analyzer,
63 errorsas.Analyzer,
64 framepointer.Analyzer,
65 httpresponse.Analyzer,
66 ifaceassert.Analyzer,
67 loopclosure.Analyzer,
68 lostcancel.Analyzer,
69 nilfunc.Analyzer,
70 printf.Analyzer,
71 shift.Analyzer,
72 sigchanyzer.Analyzer,
73 stdmethods.Analyzer,
74 stdversion.Analyzer,
75 stringintconv.Analyzer,
76 structtag.Analyzer,
77 testinggoroutine.Analyzer,
78 tests.Analyzer,
79 timeformat.Analyzer,
80 unmarshal.Analyzer,
81 unreachable.Analyzer,
82
83 unusedresult.Analyzer,
84 )
85 }
86
87
88
89
90 func TestVetStdlib(t *testing.T) {
91 if testing.Short() {
92 t.Skip("skipping in -short mode")
93 }
94 if version := runtime.Version(); !strings.HasPrefix(version, "devel") {
95 t.Skipf("This test is only wanted on development branches where code can be easily fixed. Skipping because runtime.Version=%q.", version)
96 }
97
98 cmd := exec.Command("go", "vet", "-vettool="+os.Args[0], "std")
99 cmd.Env = append(os.Environ(), "ENTRYPOINT=vet")
100 if out, err := cmd.CombinedOutput(); err != nil {
101 t.Errorf("go vet std failed (%v):\n%s", err, out)
102 }
103 }
104
View as plain text