1
1
package gotestdox_test
2
2
3
3
import (
4
- "bytes"
5
4
"fmt"
6
5
"io"
7
6
"log"
8
7
"os"
9
- "strings"
10
8
"testing"
11
9
12
10
"github.com/bitfield/gotestdox"
13
11
"github.com/fatih/color"
14
12
"github.com/google/go-cmp/cmp"
13
+ "github.com/rogpeppe/go-internal/testscript"
15
14
)
16
15
16
+ func TestMain (m * testing.M ) {
17
+ os .Exit (testscript .RunMain (m , map [string ]func () int {
18
+ "gotestdox" : gotestdox .Main ,
19
+ }))
20
+ }
21
+
22
+ func TestGotestdoxProducesCorrectOutputWhen (t * testing.T ) {
23
+ t .Parallel ()
24
+ testscript .Run (t , testscript.Params {
25
+ Dir : "testdata/script" ,
26
+ })
27
+ }
28
+
17
29
func TestParseJSON_ReturnsValidDataForValidJSON (t * testing.T ) {
18
30
t .Parallel ()
19
31
input := `{"Time":"2022-02-28T15:53:43.532326Z","Action":"pass","Package":"github.com/bitfield/script","Test":"TestFindFilesInNonexistentPathReturnsError","Elapsed":0.12}`
@@ -165,163 +177,6 @@ func TestNewTestDoxer_ReturnsTestdoxerWithStandardIOStreams(t *testing.T) {
165
177
}
166
178
}
167
179
168
- func TestFilterSetsOKToTrueIfThereAreNoTestFailures (t * testing.T ) {
169
- t .Parallel ()
170
- data , err := os .Open ("testdata/passing_tests.txt" )
171
- if err != nil {
172
- t .Fatal (err )
173
- }
174
- defer data .Close ()
175
- td := gotestdox.TestDoxer {
176
- Stdin : data ,
177
- Stdout : io .Discard ,
178
- Stderr : io .Discard ,
179
- }
180
- td .Filter ()
181
- if ! td .OK {
182
- t .Error ("not OK" )
183
- }
184
- }
185
-
186
- func TestFilterSetsOKToFalseIfAnyTestFails (t * testing.T ) {
187
- t .Parallel ()
188
- data , err := os .Open ("testdata/failing_tests.txt" )
189
- if err != nil {
190
- t .Fatal (err )
191
- }
192
- defer data .Close ()
193
- td := gotestdox.TestDoxer {
194
- Stdin : data ,
195
- Stdout : io .Discard ,
196
- Stderr : io .Discard ,
197
- }
198
- td .Filter ()
199
- if td .OK {
200
- t .Error ("got OK" )
201
- }
202
- }
203
-
204
- func TestFilterSkipsIrrelevantEvents (t * testing.T ) {
205
- t .Parallel ()
206
- data , err := os .Open ("testdata/passing_tests.txt" )
207
- if err != nil {
208
- t .Fatal (err )
209
- }
210
- defer data .Close ()
211
- buf := & bytes.Buffer {}
212
- td := gotestdox.TestDoxer {
213
- Stdin : data ,
214
- Stdout : buf ,
215
- Stderr : io .Discard ,
216
- }
217
- td .Filter ()
218
- if strings .Contains (buf .String (), "Example" ) {
219
- t .Error ("irrelevant event (Example)" )
220
- }
221
- }
222
-
223
- func TestFilterKeepsTrackOfCurrentPackage (t * testing.T ) {
224
- t .Parallel ()
225
- data , err := os .Open ("testdata/packages.txt" )
226
- if err != nil {
227
- t .Fatal (err )
228
- }
229
- defer data .Close ()
230
- buf := & bytes.Buffer {}
231
- td := gotestdox.TestDoxer {
232
- Stdin : data ,
233
- Stdout : buf ,
234
- Stderr : io .Discard ,
235
- }
236
- td .Filter ()
237
- if strings .Count (buf .String (), "a:" ) > 1 {
238
- t .Error ("want package a to be shown only once" )
239
- }
240
- }
241
-
242
- func TestFilterOrdersTestsByPrettifiedName (t * testing.T ) {
243
- data , err := os .Open ("testdata/unordered_tests.txt" )
244
- if err != nil {
245
- t .Fatal (err )
246
- }
247
- defer data .Close ()
248
- buf := & bytes.Buffer {}
249
- td := gotestdox.TestDoxer {
250
- Stdin : data ,
251
- Stdout : buf ,
252
- Stderr : io .Discard ,
253
- }
254
- color .NoColor = true
255
- td .Filter ()
256
- want := "p:\n ✔ A (0.00s)\n x B (0.00s)\n ✔ C (0.00s)\n \n "
257
- got := buf .String ()
258
- if ! cmp .Equal (want , got ) {
259
- t .Error (cmp .Diff (want , got ))
260
- }
261
- }
262
-
263
- func TestFilterHandlesOutOfOrderPackageEvents (t * testing.T ) {
264
- data , err := os .Open ("testdata/multi_packages.txt" )
265
- if err != nil {
266
- t .Fatal (err )
267
- }
268
- defer data .Close ()
269
- buf := & bytes.Buffer {}
270
- td := gotestdox.TestDoxer {
271
- Stdin : data ,
272
- Stdout : buf ,
273
- Stderr : io .Discard ,
274
- }
275
- color .NoColor = true
276
- td .Filter ()
277
- want := "p:\n ✔ A (0.00s)\n x B (0.00s)\n ✔ C (0.00s)\n \n q:\n ✔ A (0.00s)\n ✔ B (0.00s)\n \n "
278
- got := buf .String ()
279
- if ! cmp .Equal (want , got ) {
280
- t .Error (cmp .Diff (want , got ))
281
- }
282
- }
283
-
284
- func TestFilterSetsOKToFalseOnParsingError (t * testing.T ) {
285
- t .Parallel ()
286
- td := gotestdox.TestDoxer {
287
- Stdin : strings .NewReader ("invalid" ),
288
- Stdout : io .Discard ,
289
- Stderr : io .Discard ,
290
- }
291
- td .Filter ()
292
- if td .OK {
293
- t .Error ("got OK" )
294
- }
295
- }
296
-
297
- func TestExecGoTest_SetsOKToTrueWhenTestsPass (t * testing.T ) {
298
- t .Parallel ()
299
- path := newTempTestPath (t , passingTest )
300
- td := gotestdox.TestDoxer {
301
- Stdin : strings .NewReader ("invalid" ),
302
- Stdout : io .Discard ,
303
- Stderr : io .Discard ,
304
- }
305
- td .ExecGoTest ([]string {path })
306
- if ! td .OK {
307
- t .Error ("want ok" )
308
- }
309
- }
310
-
311
- func TestExecGoTest_SetsOKToFalseWhenTestsFail (t * testing.T ) {
312
- t .Parallel ()
313
- path := newTempTestPath (t , failingTest )
314
- td := gotestdox.TestDoxer {
315
- Stdin : strings .NewReader ("invalid" ),
316
- Stdout : io .Discard ,
317
- Stderr : io .Discard ,
318
- }
319
- td .ExecGoTest ([]string {path })
320
- if td .OK {
321
- t .Error ("want not ok" )
322
- }
323
- }
324
-
325
180
func TestExecGoTest_SetsOKToFalseWhenCommandErrors (t * testing.T ) {
326
181
t .Parallel ()
327
182
td := gotestdox.TestDoxer {
@@ -334,30 +189,9 @@ func TestExecGoTest_SetsOKToFalseWhenCommandErrors(t *testing.T) {
334
189
}
335
190
}
336
191
337
- var (
338
- preamble = "package dummy\n import \" testing\" \n func TestDummy(t *testing.T)"
339
- passingTest = preamble + "{}"
340
- failingTest = preamble + "{t.FailNow()}"
341
- )
342
-
343
- func newTempTestPath (t * testing.T , data string ) (path string ) {
344
- t .Helper ()
345
- testDir := t .TempDir ()
346
- err := os .WriteFile (testDir + "/go.mod" , []byte ("module dummy" ), os .ModePerm )
347
- if err != nil {
348
- t .Fatal (err )
349
- }
350
- path = testDir + "/dummy_test.go"
351
- err = os .WriteFile (path , []byte (data ), os .ModePerm )
352
- if err != nil {
353
- t .Fatal (err )
354
- }
355
- return path
356
- }
357
-
358
192
func ExampleTestDoxer_Filter () {
359
193
td := gotestdox .NewTestDoxer ()
360
- data , err := os .Open ("testdata/small_passing_tests.txt " )
194
+ data , err := os .Open ("testdata/example.json " )
361
195
if err != nil {
362
196
panic (err )
363
197
}
0 commit comments