%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const { mustCall, mustNotCall } = require('../common'); const { strictEqual } = require('assert'); const fixtures = require('../common/fixtures'); const { fork } = require('child_process'); { // Test aborting a forked child_process after calling fork const ac = new AbortController(); const { signal } = ac; const cp = fork(fixtures.path('child-process-stay-alive-forever.js'), { signal }); cp.on('exit', mustCall((code, killSignal) => { strictEqual(code, null); strictEqual(killSignal, 'SIGTERM'); })); cp.on('error', mustCall((err) => { strictEqual(err.name, 'AbortError'); })); process.nextTick(() => ac.abort()); } { // Test passing an already aborted signal to a forked child_process const signal = AbortSignal.abort(); const cp = fork(fixtures.path('child-process-stay-alive-forever.js'), { signal }); cp.on('exit', mustCall((code, killSignal) => { strictEqual(code, null); strictEqual(killSignal, 'SIGTERM'); })); cp.on('error', mustCall((err) => { strictEqual(err.name, 'AbortError'); })); } { // Test passing a different kill signal const signal = AbortSignal.abort(); const cp = fork(fixtures.path('child-process-stay-alive-forever.js'), { signal, killSignal: 'SIGKILL', }); cp.on('exit', mustCall((code, killSignal) => { strictEqual(code, null); strictEqual(killSignal, 'SIGKILL'); })); cp.on('error', mustCall((err) => { strictEqual(err.name, 'AbortError'); })); } { // Test aborting a cp before close but after exit const ac = new AbortController(); const { signal } = ac; const cp = fork(fixtures.path('child-process-stay-alive-forever.js'), { signal }); cp.on('exit', mustCall(() => { ac.abort(); })); cp.on('error', mustNotCall()); setTimeout(() => cp.kill(), 1); }