@@ -114,3 +114,66 @@ func TestExecutorNotTyper(t *testing.T) {
114
114
t .Fatalf ("expected EOF but got: %s" , err )
115
115
}
116
116
}
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