@@ -187,7 +187,7 @@ test('throw if memory limit is exceeded', async (t) => {
187187
188188test ( 'destroy should handle un-initialised workers' , async ( t ) => {
189189 const pool = createPool ( workerPath , { capacity : 10 } , logger ) ;
190- pool . destroy ( ) ;
190+ await pool . destroy ( ) ;
191191 t . is ( pool . _pool . length , 0 ) ;
192192} ) ;
193193
@@ -201,7 +201,7 @@ test('destroy should close all child processes', async (t) => {
201201 const workers = Object . values ( pool . _allWorkers ) ;
202202
203203 // now destroy it
204- pool . destroy ( ) ;
204+ await pool . destroy ( ) ;
205205
206206 // check that every child is disconnected
207207 t . true ( workers . every ( ( child ) => child . killed ) ) ;
@@ -210,27 +210,26 @@ test('destroy should close all child processes', async (t) => {
210210 t . is ( pool . _pool . length , 0 ) ;
211211} ) ;
212212
213- test ( 'destroy gracefully' , ( t ) => {
214- return new Promise ( ( done ) => {
215- const pool = createPool ( workerPath , { } , logger ) ;
216- const workers = Object . values ( pool . _allWorkers ) ;
213+ test ( 'destroy gracefully' , async ( t ) => {
214+ const pool = createPool ( workerPath , { } , logger ) ;
215+ const workers = Object . values ( pool . _allWorkers ) ;
217216
218- t . is ( pool . _pool . length , 5 ) ;
217+ t . is ( pool . _pool . length , 5 ) ;
219218
220- pool . exec ( 'wait' , [ 100 ] ) . then ( ( result ) => {
221- t . is ( result , 1 ) ;
222- setTimeout ( ( ) => {
223- t . true ( workers . every ( ( child ) => child . killed ) ) ;
224- t . is ( pool . _pool . length , 0 ) ;
219+ const taskPromise = pool . exec ( 'wait' , [ 100 ] ) ;
225220
226- done ( ) ;
227- } , 1 ) ;
228- } ) ;
221+ await pool . destroy ( ) ;
229222
230- pool . destroy ( ) ;
223+ t . is ( pool . _pool . length , 0 ) ;
231224
232- t . is ( pool . _pool . length , 0 ) ;
233- } ) ;
225+ // The task should complete gracefully
226+ const result = await taskPromise ;
227+ t . is ( result , 1 ) ;
228+
229+ // Give a moment for cleanup to finish
230+ await new Promise ( ( resolve ) => setTimeout ( resolve , 10 ) ) ;
231+
232+ t . true ( workers . every ( ( child ) => child . killed ) ) ;
234233} ) ;
235234
236235// TODO should the worker throw on sigterm?
0 commit comments