@@ -237,6 +237,12 @@ describe('resolveTaskFn', () => {
237237 expect ( context ) . toMatchInlineSnapshot ( `
238238 Object {
239239 "errors": Set {},
240+ "events": EventEmitter {
241+ "_events": Object {},
242+ "_eventsCount": 0,
243+ "_maxListeners": undefined,
244+ Symbol(kCapture): false,
245+ },
240246 "hasPartiallyStagedFiles": null,
241247 "output": Array [],
242248 "quiet": false,
@@ -263,6 +269,12 @@ describe('resolveTaskFn', () => {
263269 expect ( context ) . toMatchInlineSnapshot ( `
264270 Object {
265271 "errors": Set {},
272+ "events": EventEmitter {
273+ "_events": Object {},
274+ "_eventsCount": 0,
275+ "_maxListeners": undefined,
276+ Symbol(kCapture): false,
277+ },
266278 "hasPartiallyStagedFiles": null,
267279 "output": Array [
268280 "
@@ -295,6 +307,12 @@ describe('resolveTaskFn', () => {
295307 "errors": Set {
296308 Symbol(TaskError),
297309 },
310+ "events": EventEmitter {
311+ "_events": Object {},
312+ "_eventsCount": 0,
313+ "_maxListeners": undefined,
314+ Symbol(kCapture): false,
315+ },
298316 "hasPartiallyStagedFiles": null,
299317 "output": Array [
300318 "stderr",
@@ -325,6 +343,12 @@ describe('resolveTaskFn', () => {
325343 "errors": Set {
326344 Symbol(TaskError),
327345 },
346+ "events": EventEmitter {
347+ "_events": Object {},
348+ "_eventsCount": 0,
349+ "_maxListeners": undefined,
350+ Symbol(kCapture): false,
351+ },
328352 "hasPartiallyStagedFiles": null,
329353 "output": Array [],
330354 "quiet": true,
@@ -358,7 +382,38 @@ describe('resolveTaskFn', () => {
358382 await expect ( taskPromise ) . resolves . toEqual ( )
359383 } )
360384
361- it ( 'should kill a long running task when an error is added to the context' , async ( ) => {
385+ it ( 'should ignore pid-tree errors' , async ( ) => {
386+ execa . mockImplementationOnce ( ( ) =>
387+ createExecaReturnValue (
388+ {
389+ stdout : 'a-ok' ,
390+ stderr : '' ,
391+ code : 0 ,
392+ cmd : 'mock cmd' ,
393+ failed : false ,
394+ killed : false ,
395+ signal : null ,
396+ } ,
397+ 1000
398+ )
399+ )
400+
401+ pidTree . mockImplementationOnce ( ( ) => {
402+ throw new Error ( 'No matching pid found' )
403+ } )
404+
405+ const context = getInitialState ( )
406+ const taskFn = resolveTaskFn ( { command : 'node' } )
407+ const taskPromise = taskFn ( context )
408+
409+ context . events . emit ( 'lint-staged:taskError' )
410+
411+ jest . runAllTimers ( )
412+
413+ await expect ( taskPromise ) . rejects . toThrowErrorMatchingInlineSnapshot ( `"node [KILLED]"` )
414+ } )
415+
416+ it ( 'should kill a long running task when error event is emitted' , async ( ) => {
362417 execa . mockImplementationOnce ( ( ) =>
363418 createExecaReturnValue (
364419 {
@@ -378,7 +433,7 @@ describe('resolveTaskFn', () => {
378433 const taskFn = resolveTaskFn ( { command : 'node' } )
379434 const taskPromise = taskFn ( context )
380435
381- context . errors . add ( { } )
436+ context . events . emit ( 'lint-staged:taskError' )
382437
383438 jest . runAllTimers ( )
384439
@@ -416,7 +471,8 @@ describe('resolveTaskFn', () => {
416471 const context = getInitialState ( )
417472 const taskPromise = taskFn ( context )
418473
419- context . errors . add ( { } )
474+ context . events . emit ( 'lint-staged:taskError' )
475+
420476 jest . runAllTimers ( )
421477
422478 await expect ( taskPromise ) . rejects . toThrowErrorMatchingInlineSnapshot ( `"node [KILLED]"` )
0 commit comments