-
Notifications
You must be signed in to change notification settings - Fork 0
/
app_test.go
125 lines (103 loc) · 3.03 KB
/
app_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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//go:build unit_test
package cyclecmd_test
import (
"context"
"os"
"os/exec"
"testing"
"github.com/RaphSku/cyclecmd"
"github.com/stretchr/testify/assert"
)
func TestConsoleAppCreation(t *testing.T) {
t.Parallel()
ctx := context.Background()
eventRegistry := cyclecmd.NewEventRegistry(setupDefaultEventInformation())
eventHistory := cyclecmd.NewEventHistory()
actConsoleApp := cyclecmd.NewConsoleApp(
ctx,
"test",
"0.1.0",
"This is a test console application",
eventRegistry,
eventHistory,
)
expConsoleApp := &cyclecmd.ConsoleApp{
Name: "test",
Version: "0.1.0",
Description: "This is a test console application",
}
assert.Equal(t, expConsoleApp.Name, actConsoleApp.Name)
assert.Equal(t, expConsoleApp.Version, actConsoleApp.Version)
assert.Equal(t, expConsoleApp.Description, actConsoleApp.Description)
}
func TestChangeToDebugMode(t *testing.T) {
t.Parallel()
ctx := context.Background()
eventRegistry := cyclecmd.NewEventRegistry(setupDefaultEventInformation())
eventHistory := cyclecmd.NewEventHistory()
consoleApp := cyclecmd.NewConsoleApp(
ctx,
"test",
"0.1.0",
"This is a test console application",
eventRegistry,
eventHistory,
)
expOutput := "Attention! You have enabled debug mode (Level: debug)! Turn off if running in production!\r\n"
actOutput, err := captureStdOutput(func() {
consoleApp.ChangeToDebugMode()
})
assert.NoError(t, err)
assert.Equal(t, expOutput, actOutput)
}
func TestSetLineDelimiter(t *testing.T) {
t.Parallel()
ctx := context.Background()
eventRegistry := cyclecmd.NewEventRegistry(setupDefaultEventInformation())
expEventTrigger := "z"
delimiterEventInformation := cyclecmd.EventInformation{
EventName: "Z",
Event: &TestEvent{},
}
err := eventRegistry.RegisterEvent(expEventTrigger, delimiterEventInformation)
assert.NoError(t, err)
eventHistory := cyclecmd.NewEventHistory()
consoleApp := cyclecmd.NewConsoleApp(
ctx,
"test",
"0.1.0",
"This is a test console application",
eventRegistry,
eventHistory,
)
expDelimiter := "<<< "
consoleApp.SetLineDelimiter(expDelimiter, expEventTrigger)
assert.Equal(t, expDelimiter, consoleApp.Delimiter)
assert.Equal(t, expEventTrigger, consoleApp.DelimiterEventTrigger)
}
func TestSetLineDelimiterNotInRegistry(t *testing.T) {
t.Parallel()
if os.Getenv("UT_SetLineDelimiterNotInRegistry") == "1" {
ctx := context.Background()
eventRegistry := cyclecmd.NewEventRegistry(setupDefaultEventInformation())
eventHistory := cyclecmd.NewEventHistory()
consoleApp := cyclecmd.NewConsoleApp(
ctx,
"test",
"0.1.0",
"This is a test console application",
eventRegistry,
eventHistory,
)
delimiter := "<<< "
eventTrigger := "z"
consoleApp.SetLineDelimiter(delimiter, eventTrigger)
}
cmd := exec.Command(os.Args[0], "-test.run=TestSetLineDelimiterNotInRegistry")
cmd.Env = append(os.Environ(), "UT_SetLineDelimiterNotInRegistry=1")
err := cmd.Run()
if e, ok := err.(*exec.ExitError); ok && !e.Success() {
return
}
t.Fatalf("process returned err: %v, want exit code 1", err)
}