1
1
package clog
2
2
3
3
import (
4
+ "bytes"
4
5
"fmt"
5
6
"io/ioutil"
6
- "os"
7
7
"testing"
8
8
9
9
"cdr.dev/slog/sloggers/slogtest/assert"
@@ -16,16 +16,13 @@ func TestError(t *testing.T) {
16
16
mockErr = xerrors .Errorf ("wrap 1: %w" , mockErr )
17
17
mockErr = fmt .Errorf ("wrap 2: %w" , mockErr )
18
18
19
- reader , writer , err := os .Pipe ()
20
- assert .Success (t , "create pipe" , err )
21
-
22
- //! clearly not thread safe
23
- SetOutput (writer )
19
+ var buf bytes.Buffer
20
+ //! clearly not concurrent safe
21
+ SetOutput (& buf )
24
22
25
23
Log (mockErr )
26
- writer .Close ()
27
24
28
- output , err := ioutil .ReadAll (reader )
25
+ output , err := ioutil .ReadAll (& buf )
29
26
assert .Success (t , "read all stderr output" , err )
30
27
31
28
assert .Equal (t , "output is as expected" , "error: fake error\n \n " , string (output ))
@@ -35,36 +32,48 @@ func TestError(t *testing.T) {
35
32
mockErr := xerrors .Errorf ("base error" )
36
33
mockErr = fmt .Errorf ("wrap 1: %w" , mockErr )
37
34
38
- reader , writer , err := os .Pipe ()
39
- assert .Success (t , "create pipe" , err )
40
-
41
- //! clearly not thread safe
42
- SetOutput (writer )
35
+ var buf bytes.Buffer
36
+ //! clearly not concurrent safe
37
+ SetOutput (& buf )
43
38
44
39
Log (mockErr )
45
- writer .Close ()
46
40
47
- output , err := ioutil .ReadAll (reader )
41
+ output , err := ioutil .ReadAll (& buf )
48
42
assert .Success (t , "read all stderr output" , err )
49
43
50
44
assert .Equal (t , "output is as expected" , "fatal: wrap 1: base error\n \n " , string (output ))
51
45
})
52
46
47
+ t .Run ("message" , func (t * testing.T ) {
48
+ for _ , f := range []struct {
49
+ f func (string , ... string )
50
+ level string
51
+ }{{LogInfo , "info" }, {LogSuccess , "success" }, {LogWarn , "warning" }} {
52
+ var buf bytes.Buffer
53
+ //! clearly not concurrent safe
54
+ SetOutput (& buf )
55
+
56
+ f .f ("testing" , Hintf ("maybe do %q" , "this" ), BlankLine , Causef ("what happened was %q" , "this" ))
57
+
58
+ output , err := ioutil .ReadAll (& buf )
59
+ assert .Success (t , "read all stderr output" , err )
60
+
61
+ assert .Equal (t , "output is as expected" , f .level + ": testing\n | hint: maybe do \" this\" \n | \n | cause: what happened was \" this\" \n " , string (output ))
62
+ }
63
+ })
64
+
53
65
t .Run ("multi-line" , func (t * testing.T ) {
54
66
var mockErr error = Error ("fake header" , "next line" , BlankLine , Tipf ("content of fake tip" ))
55
67
mockErr = xerrors .Errorf ("wrap 1: %w" , mockErr )
56
68
mockErr = fmt .Errorf ("wrap 1: %w" , mockErr )
57
69
58
- reader , writer , err := os .Pipe ()
59
- assert .Success (t , "create pipe" , err )
60
-
61
- //! clearly not thread safe
62
- SetOutput (writer )
70
+ var buf bytes.Buffer
71
+ //! clearly not concurrent safe
72
+ SetOutput (& buf )
63
73
64
74
Log (mockErr )
65
- writer .Close ()
66
75
67
- output , err := ioutil .ReadAll (reader )
76
+ output , err := ioutil .ReadAll (& buf )
68
77
assert .Success (t , "read all stderr output" , err )
69
78
70
79
assert .Equal (t ,
0 commit comments