1 package main
2
3 import (
4 "io/ioutil"
5 "os"
6 "path/filepath"
7 "testing"
8 )
9
10 type test struct {
11 name string
12 in string
13 out string
14 }
15
16 var tests = []test{
17 {
18 name: "no imports",
19 in: `package main
20 `,
21 out: `package main; import "github.com/bazelbuild/rules_go/go/tools/coverdata"
22
23 func init() {
24 coverdata.RegisterFile("srcName",
25 varName.Count[:],
26 varName.Pos[:],
27 varName.NumStmt[:])
28 }
29 `,
30 },
31 {
32 name: "other imports",
33 in: `package main
34
35 import (
36 "os"
37 )
38 `,
39 out: `package main; import "github.com/bazelbuild/rules_go/go/tools/coverdata"
40
41 import (
42 "os"
43 )
44
45 func init() {
46 coverdata.RegisterFile("srcName",
47 varName.Count[:],
48 varName.Pos[:],
49 varName.NumStmt[:])
50 }
51 `,
52 },
53 {
54 name: "existing import",
55 in: `package main
56
57 import "github.com/bazelbuild/rules_go/go/tools/coverdata"
58 `,
59 out: `package main
60
61 import "github.com/bazelbuild/rules_go/go/tools/coverdata"
62
63 func init() {
64 coverdata.RegisterFile("srcName",
65 varName.Count[:],
66 varName.Pos[:],
67 varName.NumStmt[:])
68 }
69 `,
70 },
71 {
72 name: "existing _ import",
73 in: `package main
74
75 import _ "github.com/bazelbuild/rules_go/go/tools/coverdata"
76 `,
77 out: `package main
78
79 import coverdata "github.com/bazelbuild/rules_go/go/tools/coverdata"
80
81 func init() {
82 coverdata.RegisterFile("srcName",
83 varName.Count[:],
84 varName.Pos[:],
85 varName.NumStmt[:])
86 }
87 `,
88 },
89 {
90 name: "existing renamed import",
91 in: `package main
92
93 import cover0 "github.com/bazelbuild/rules_go/go/tools/coverdata"
94 `,
95 out: `package main
96
97 import cover0 "github.com/bazelbuild/rules_go/go/tools/coverdata"
98
99 func init() {
100 cover0.RegisterFile("srcName",
101 varName.Count[:],
102 varName.Pos[:],
103 varName.NumStmt[:])
104 }
105 `,
106 },
107 }
108
109 func TestRegisterCoverage(t *testing.T) {
110 var filename = filepath.Join(t.TempDir(), "test_input.go")
111 for _, test := range tests {
112 if err := ioutil.WriteFile(filename, []byte(test.in), 0666); err != nil {
113 t.Errorf("writing input file: %v", err)
114 return
115 }
116 err := registerCoverage(filename, "varName", "srcName")
117 if err != nil {
118 t.Errorf("%q: %+v", test.name, err)
119 continue
120 }
121 coverSrc, err := os.ReadFile(filename)
122 if err != nil {
123 t.Errorf("%q: %+v", test.name, err)
124 continue
125 }
126 if got, want := string(coverSrc), test.out; got != want {
127 t.Errorf("%q: got %v, want %v", test.name, got, want)
128 }
129 }
130 }
131
View as plain text