@@ -14,13 +14,20 @@ import (
1414
1515type checkFn func (t * testing.T , stdout , stderr []byte , err error )
1616
17- var profileTests = []struct {
18- name string
19- code string
20- checks []checkFn
21- }{{
22- name : "default profile (cpu)" ,
23- code : `
17+ func TestProfile (t * testing.T ) {
18+ f , err := ioutil .TempFile ("" , "profile_test" )
19+ if err != nil {
20+ t .Fatal (err )
21+ }
22+ defer os .Remove (f .Name ())
23+
24+ var profileTests = []struct {
25+ name string
26+ code string
27+ checks []checkFn
28+ }{{
29+ name : "default profile (cpu)" ,
30+ code : `
2431package main
2532
2633import "github.com/pkg/profile"
@@ -29,14 +36,14 @@ func main() {
2936 defer profile.Start().Stop()
3037}
3138` ,
32- checks : []checkFn {
33- NoStdout ,
34- Stderr ("profile: cpu profiling enabled" ),
35- NoErr ,
36- },
37- }, {
38- name : "memory profile" ,
39- code : `
39+ checks : []checkFn {
40+ NoStdout ,
41+ Stderr ("profile: cpu profiling enabled" ),
42+ NoErr ,
43+ },
44+ }, {
45+ name : "memory profile" ,
46+ code : `
4047package main
4148
4249import "github.com/pkg/profile"
@@ -45,14 +52,14 @@ func main() {
4552 defer profile.Start(profile.MemProfile).Stop()
4653}
4754` ,
48- checks : []checkFn {
49- NoStdout ,
50- Stderr ("profile: memory profiling enabled" ),
51- NoErr ,
52- },
53- }, {
54- name : "memory profile (rate 2048)" ,
55- code : `
55+ checks : []checkFn {
56+ NoStdout ,
57+ Stderr ("profile: memory profiling enabled" ),
58+ NoErr ,
59+ },
60+ }, {
61+ name : "memory profile (rate 2048)" ,
62+ code : `
5663package main
5764
5865import "github.com/pkg/profile"
@@ -61,14 +68,14 @@ func main() {
6168 defer profile.Start(profile.MemProfileRate(2048)).Stop()
6269}
6370` ,
64- checks : []checkFn {
65- NoStdout ,
66- Stderr ("profile: memory profiling enabled (rate 2048)" ),
67- NoErr ,
68- },
69- }, {
70- name : "double start" ,
71- code : `
71+ checks : []checkFn {
72+ NoStdout ,
73+ Stderr ("profile: memory profiling enabled (rate 2048)" ),
74+ NoErr ,
75+ },
76+ }, {
77+ name : "double start" ,
78+ code : `
7279package main
7380
7481import "github.com/pkg/profile"
@@ -78,14 +85,14 @@ func main() {
7885 profile.Start()
7986}
8087` ,
81- checks : []checkFn {
82- NoStdout ,
83- Stderr ("cpu profiling enabled" , "profile: Start() already called" ),
84- Err ,
85- },
86- }, {
87- name : "block profile" ,
88- code : `
88+ checks : []checkFn {
89+ NoStdout ,
90+ Stderr ("cpu profiling enabled" , "profile: Start() already called" ),
91+ Err ,
92+ },
93+ }, {
94+ name : "block profile" ,
95+ code : `
8996package main
9097
9198import "github.com/pkg/profile"
@@ -94,14 +101,14 @@ func main() {
94101 defer profile.Start(profile.BlockProfile).Stop()
95102}
96103` ,
97- checks : []checkFn {
98- NoStdout ,
99- Stderr ("profile: block profiling enabled" ),
100- NoErr ,
101- },
102- }, {
103- name : "mutex profile" ,
104- code : `
104+ checks : []checkFn {
105+ NoStdout ,
106+ Stderr ("profile: block profiling enabled" ),
107+ NoErr ,
108+ },
109+ }, {
110+ name : "mutex profile" ,
111+ code : `
105112package main
106113
107114import "github.com/pkg/profile"
@@ -110,14 +117,14 @@ func main() {
110117 defer profile.Start(profile.MutexProfile).Stop()
111118}
112119` ,
113- checks : []checkFn {
114- NoStdout ,
115- Stderr ("profile: mutex profiling enabled" ),
116- NoErr ,
117- },
118- }, {
119- name : "profile path" ,
120- code : `
120+ checks : []checkFn {
121+ NoStdout ,
122+ Stderr ("profile: mutex profiling enabled" ),
123+ NoErr ,
124+ },
125+ }, {
126+ name : "profile path" ,
127+ code : `
121128package main
122129
123130import "github.com/pkg/profile"
@@ -126,30 +133,30 @@ func main() {
126133 defer profile.Start(profile.ProfilePath(".")).Stop()
127134}
128135` ,
129- checks : []checkFn {
130- NoStdout ,
131- Stderr ("profile: cpu profiling enabled, cpu.pprof" ),
132- NoErr ,
133- },
134- }, {
135- name : "profile path error" ,
136- code : `
136+ checks : []checkFn {
137+ NoStdout ,
138+ Stderr ("profile: cpu profiling enabled, cpu.pprof" ),
139+ NoErr ,
140+ },
141+ }, {
142+ name : "profile path error" ,
143+ code : `
137144package main
138145
139146import "github.com/pkg/profile"
140147
141148func main() {
142- defer profile.Start(profile.ProfilePath("README.md ")).Stop()
149+ defer profile.Start(profile.ProfilePath("` + f . Name () + ` ")).Stop()
143150}
144151` ,
145- checks : []checkFn {
146- NoStdout ,
147- Stderr ("could not create initial output" ),
148- Err ,
149- },
150- }, {
151- name : "multiple profile sessions" ,
152- code : `
152+ checks : []checkFn {
153+ NoStdout ,
154+ Stderr ("could not create initial output" ),
155+ Err ,
156+ },
157+ }, {
158+ name : "multiple profile sessions" ,
159+ code : `
153160package main
154161
155162import "github.com/pkg/profile"
@@ -162,23 +169,23 @@ func main() {
162169 profile.Start(profile.MutexProfile).Stop()
163170}
164171` ,
165- checks : []checkFn {
166- NoStdout ,
167- Stderr ("profile: cpu profiling enabled" ,
168- "profile: cpu profiling disabled" ,
169- "profile: memory profiling enabled" ,
170- "profile: memory profiling disabled" ,
171- "profile: block profiling enabled" ,
172- "profile: block profiling disabled" ,
173- "profile: cpu profiling enabled" ,
174- "profile: cpu profiling disabled" ,
175- "profile: mutex profiling enabled" ,
176- "profile: mutex profiling disabled" ),
177- NoErr ,
178- },
179- }, {
180- name : "profile quiet" ,
181- code : `
172+ checks : []checkFn {
173+ NoStdout ,
174+ Stderr ("profile: cpu profiling enabled" ,
175+ "profile: cpu profiling disabled" ,
176+ "profile: memory profiling enabled" ,
177+ "profile: memory profiling disabled" ,
178+ "profile: block profiling enabled" ,
179+ "profile: block profiling disabled" ,
180+ "profile: cpu profiling enabled" ,
181+ "profile: cpu profiling disabled" ,
182+ "profile: mutex profiling enabled" ,
183+ "profile: mutex profiling disabled" ),
184+ NoErr ,
185+ },
186+ }, {
187+ name : "profile quiet" ,
188+ code : `
182189package main
183190
184191import "github.com/pkg/profile"
@@ -187,10 +194,8 @@ func main() {
187194 defer profile.Start(profile.Quiet).Stop()
188195}
189196` ,
190- checks : []checkFn {NoStdout , NoStderr , NoErr },
191- }}
192-
193- func TestProfile (t * testing.T ) {
197+ checks : []checkFn {NoStdout , NoStderr , NoErr },
198+ }}
194199 for _ , tt := range profileTests {
195200 t .Log (tt .name )
196201 stdout , stderr , err := runTest (t , tt .code )
0 commit comments