5
5
package vta
6
6
7
7
import (
8
+ "strings"
8
9
"testing"
9
10
11
+ "github.com/google/go-cmp/cmp"
10
12
"golang.org/x/tools/go/analysis"
11
13
"golang.org/x/tools/go/analysis/analysistest"
12
14
"golang.org/x/tools/go/analysis/passes/buildssa"
13
15
"golang.org/x/tools/go/callgraph/cha"
14
16
"golang.org/x/tools/go/ssa"
15
17
"golang.org/x/tools/go/ssa/ssautil"
18
+ "golang.org/x/tools/internal/aliases"
16
19
)
17
20
18
21
func TestVTACallGraph (t * testing.T ) {
@@ -30,6 +33,11 @@ func TestVTACallGraph(t *testing.T) {
30
33
"testdata/src/callgraph_type_aliases.go" ,
31
34
} {
32
35
t .Run (file , func (t * testing.T ) {
36
+ // https://github.com/golang/go/issues/68799
37
+ if ! aliases .Enabled () && file == "testdata/src/callgraph_type_aliases.go" {
38
+ t .Skip ("callgraph_type_aliases.go requires gotypesalias=1" )
39
+ }
40
+
33
41
prog , want , err := testProg (file , ssa .BuilderMode (0 ))
34
42
if err != nil {
35
43
t .Fatalf ("couldn't load test file '%s': %s" , file , err )
@@ -40,8 +48,12 @@ func TestVTACallGraph(t *testing.T) {
40
48
41
49
g := CallGraph (ssautil .AllFunctions (prog ), cha .CallGraph (prog ))
42
50
got := callGraphStr (g )
43
- if diff := setdiff (want , got ); len (diff ) > 0 {
44
- t .Errorf ("computed callgraph %v\n should contain\n %v\n (diff: %v)" , got , want , diff )
51
+ if missing := setdiff (want , got ); len (missing ) > 0 {
52
+ t .Errorf ("got:\n %s\n \n want:\n %s\n \n missing:\n %s\n \n diff:\n %s" ,
53
+ strings .Join (got , "\n " ),
54
+ strings .Join (want , "\n " ),
55
+ strings .Join (missing , "\n " ),
56
+ cmp .Diff (got , want )) // to aid debugging
45
57
}
46
58
})
47
59
}
0 commit comments