github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/go/analysis/passes/ctrlflow/ctrlflow_test.go (about) 1 // Copyright 2018 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package ctrlflow_test 6 7 import ( 8 "go/ast" 9 "testing" 10 11 "github.com/powerman/golang-tools/go/analysis/analysistest" 12 "github.com/powerman/golang-tools/go/analysis/passes/ctrlflow" 13 "github.com/powerman/golang-tools/internal/typeparams" 14 ) 15 16 func Test(t *testing.T) { 17 testdata := analysistest.TestData() 18 19 // load testdata/src/a/a.go 20 tests := []string{"a"} 21 if typeparams.Enabled { 22 // and testdata/src/typeparams/typeparams.go when possible 23 tests = append(tests, "typeparams") 24 } 25 results := analysistest.Run(t, testdata, ctrlflow.Analyzer, tests...) 26 27 // Perform a minimal smoke test on 28 // the result (CFG) computed by ctrlflow. 29 for _, result := range results { 30 cfgs := result.Result.(*ctrlflow.CFGs) 31 32 for _, decl := range result.Pass.Files[0].Decls { 33 if decl, ok := decl.(*ast.FuncDecl); ok && decl.Body != nil { 34 if cfgs.FuncDecl(decl) == nil { 35 t.Errorf("%s: no CFG for func %s", 36 result.Pass.Fset.Position(decl.Pos()), decl.Name.Name) 37 } 38 } 39 } 40 } 41 }