@@ -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