1package testutil 2 3import ( 4 "testing" 5 6 "golang.org/x/tools/go/analysis" 7 "golang.org/x/tools/go/analysis/analysistest" 8) 9 10type Test struct { 11 Dir string 12 Version string 13 SuggestedFixes bool 14} 15 16func Run(t *testing.T, analyzers map[string]*analysis.Analyzer, tests map[string][]Test) { 17 for _, a := range analyzers { 18 a := a 19 t.Run(a.Name, func(t *testing.T) { 20 t.Parallel() 21 tt, ok := tests[a.Name] 22 if !ok { 23 t.Fatalf("no tests for analyzer %s", a.Name) 24 } 25 for _, test := range tt { 26 if test.Version != "" { 27 if err := a.Flags.Lookup("go").Value.Set(test.Version); err != nil { 28 t.Fatal(err) 29 } 30 } 31 if test.SuggestedFixes { 32 analysistest.RunWithSuggestedFixes(t, analysistest.TestData(), a, test.Dir) 33 } else { 34 analysistest.Run(t, analysistest.TestData(), a, test.Dir) 35 } 36 } 37 }) 38 } 39} 40