@@ -177,8 +177,24 @@ describe('Environment', () => {
177177 exec ( ) { }
178178 } ;
179179
180+ this . PromiseFailingStub = class extends Generator {
181+
182+ install ( ) {
183+ return Promise . reject ( new Error ( 'some error' ) ) ;
184+ }
185+ } ;
186+
187+ this . EventFailingStub = class extends Generator {
188+
189+ install ( ) {
190+ return this . emit ( 'error' , new Error ( 'some error' ) ) ;
191+ }
192+ } ;
193+
180194 this . runMethod = sinon . spy ( Generator . prototype , 'run' ) ;
181195 this . env . registerStub ( this . Stub , 'stub:run' ) ;
196+ this . env . registerStub ( this . PromiseFailingStub , 'promisefailingstub:run' ) ;
197+ this . env . registerStub ( this . EventFailingStub , 'eventfailingstub:run' ) ;
182198 } ) ;
183199
184200 afterEach ( function ( ) {
@@ -248,6 +264,35 @@ describe('Environment', () => {
248264 this . env . run ( 'some:unknown:generator' ) ;
249265 } ) ;
250266
267+ it ( 'generator promise error calls callback properly' , function ( done ) {
268+ this . env . run ( 'promisefailingstub:run' , err => {
269+ assert . ok ( this . runMethod . calledOnce ) ;
270+ assert . ok ( err instanceof Error ) ;
271+ assert . equal ( err . message , 'some error' ) ;
272+ done ( ) ;
273+ } ) ;
274+ } ) ;
275+
276+ it ( 'generator error event calls callback properly' , function ( done ) {
277+ this . env . run ( 'eventfailingstub:run' , err => {
278+ assert . ok ( this . runMethod . calledOnce ) ;
279+ assert . ok ( err instanceof Error ) ;
280+ assert . equal ( err . message , 'some error' ) ;
281+ done ( ) ;
282+ } ) ;
283+ } ) ;
284+
285+ it ( 'generator error event emits error event when no callback passed' , function ( done ) {
286+ const generator = this . env . run ( 'eventfailingstub:run' ) ;
287+ assert . equal ( generator . listenerCount ( 'error' ) , 0 ) ;
288+ generator . on ( 'error' , err => {
289+ assert . ok ( this . runMethod . calledOnce ) ;
290+ assert . ok ( err instanceof Error ) ;
291+ assert . equal ( err . message , 'some error' ) ;
292+ done ( ) ;
293+ } ) ;
294+ } ) ;
295+
251296 it ( 'returns the generator' , function ( ) {
252297 assert . ok ( this . env . run ( 'stub:run' ) instanceof Generator ) ;
253298 } ) ;
0 commit comments