Skip to content

Commit 5b67d42

Browse files
authored
Merge pull request #40 from pkg/fixedbugs/39
profile: don't assume README.md is available
2 parents 06b9068 + 52c30d7 commit 5b67d42

1 file changed

Lines changed: 98 additions & 93 deletions

File tree

profile_test.go

Lines changed: 98 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,20 @@ import (
1414

1515
type 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: `
2431
package main
2532
2633
import "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: `
4047
package main
4148
4249
import "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: `
5663
package main
5764
5865
import "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: `
7279
package main
7380
7481
import "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: `
8996
package main
9097
9198
import "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: `
105112
package main
106113
107114
import "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: `
121128
package main
122129
123130
import "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: `
137144
package main
138145
139146
import "github.com/pkg/profile"
140147
141148
func 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: `
153160
package main
154161
155162
import "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: `
182189
package main
183190
184191
import "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

Comments
 (0)