-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathcli_test.go
76 lines (73 loc) · 1.25 KB
/
cli_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package shukujitsu
import (
"bytes"
"os"
"strings"
"testing"
)
var cliTestCases = []struct {
quiet bool
date string
output string
code int
}{
{
quiet: false,
date: "2021-01-01",
output: "2021-01-01 元日",
code: 0,
},
{
quiet: false,
date: "2021-01-02",
output: "2021-01-02 ",
code: 1,
},
{
quiet: false,
date: "2021-01-0x",
output: `parsing time "2021-01-0x" as "2006-01-02": cannot parse "0x" as "02"`,
code: 2,
},
{
quiet: true,
date: "2021-01-01",
output: "",
code: 0,
},
{
quiet: true,
date: "2021-01-02",
output: "",
code: 1,
},
{
quiet: true,
date: "2021-01-0x",
output: `parsing time "2021-01-0x" as "2006-01-02": cannot parse "0x" as "02"`,
code: 2,
},
}
func TestCLI(t *testing.T) {
stdout := os.Stdout
defer func() {
os.Stdout = stdout
}()
for _, c := range cliTestCases {
var b []byte
buf := bytes.NewBuffer(b)
code := RunCLI(&CLIOption{
Quiet: c.quiet,
Date: c.date,
DateFormat: "2006-01-02",
Writer: buf,
})
if code != c.code {
t.Errorf("unexpected code %d %v", code, c)
}
output := strings.TrimRight(buf.String(), "\n")
if output != c.output {
t.Errorf("unexpected output %s %v", output, c)
}
}
}