Skip to content

Commit d89651f

Browse files
djdvguseggert
authored andcommitted
add: tests for postrun execution
1 parent d2ab689 commit d89651f

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

executor_test.go

+63
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,66 @@ func TestExecutorNotTyper(t *testing.T) {
114114
t.Fatalf("expected EOF but got: %s", err)
115115
}
116116
}
117+
118+
func TestExecutorPostRun(t *testing.T) {
119+
expectedValue := errors.New("postrun ran")
120+
testCmd := &Command{
121+
Run: func(*Request, ResponseEmitter, Environment) error {
122+
return nil
123+
},
124+
PostRun: PostRunMap{
125+
CLI: func(response Response, emitter ResponseEmitter) error {
126+
return expectedValue
127+
},
128+
},
129+
}
130+
testRoot := &Command{
131+
Subcommands: map[string]*Command{
132+
"test": testCmd,
133+
},
134+
}
135+
req, err := NewRequest(context.Background(), []string{"test"}, nil, nil, nil, testRoot)
136+
if err != nil {
137+
t.Fatal(err)
138+
}
139+
140+
t.Run("with", func(t *testing.T) {
141+
var (
142+
emitter, resp = NewChanResponsePair(req)
143+
x = NewExecutor(testRoot)
144+
)
145+
emitter = cliMockEmitter{emitter}
146+
147+
if err := x.Execute(req, emitter, nil); err != nil {
148+
t.Fatal(err)
149+
}
150+
151+
_, err := resp.Next()
152+
if err != expectedValue {
153+
t.Fatalf("expected Response to return %s but got: %s",
154+
expectedValue, err)
155+
}
156+
})
157+
158+
t.Run("without", func(t *testing.T) {
159+
testCmd.PostRun = nil
160+
161+
var (
162+
emitter, resp = NewChanResponsePair(req)
163+
x = NewExecutor(testRoot)
164+
)
165+
emitter = cliMockEmitter{emitter}
166+
if err := x.Execute(req, emitter, nil); err != nil {
167+
t.Fatal(err)
168+
}
169+
170+
_, err := resp.Next()
171+
if err != io.EOF {
172+
t.Fatalf("expected EOF but got: %s", err)
173+
}
174+
})
175+
}
176+
177+
type cliMockEmitter struct{ ResponseEmitter }
178+
179+
func (cliMockEmitter) Type() PostRunType { return CLI }

0 commit comments

Comments
 (0)