--- /dev/null
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package ctrlflow_test
+
+import (
+ "go/ast"
+ "testing"
+
+ "golang.org/x/tools/go/analysis/analysistest"
+ "golang.org/x/tools/go/analysis/passes/ctrlflow"
+)
+
+func Test(t *testing.T) {
+ testdata := analysistest.TestData()
+
+ // load testdata/src/a/a.go
+ results := analysistest.Run(t, testdata, ctrlflow.Analyzer, "a")
+
+ // Perform a minimal smoke test on
+ // the result (CFG) computed by ctrlflow.
+ for _, result := range results {
+ cfgs := result.Result.(*ctrlflow.CFGs)
+
+ for _, decl := range result.Pass.Files[0].Decls {
+ if decl, ok := decl.(*ast.FuncDecl); ok && decl.Body != nil {
+ if cfgs.FuncDecl(decl) == nil {
+ t.Errorf("%s: no CFG for func %s",
+ result.Pass.Fset.Position(decl.Pos()), decl.Name.Name)
+ }
+ }
+ }
+ }
+}