11/* eslint-disable node-core/require-common-first, node-core/required-modules */
22'use strict' ;
33
4- const { execSync } = require ( 'child_process' ) ;
54const fs = require ( 'fs' ) ;
65const path = require ( 'path' ) ;
7- const { debuglog } = require ( 'util' ) ;
86const { isMainThread } = require ( 'worker_threads' ) ;
97
10- const debug = debuglog ( 'test/tmpdir' ) ;
11-
12- function rimrafSync ( pathname , { spawn = true } = { } ) {
13- const st = ( ( ) => {
14- try {
15- return fs . lstatSync ( pathname ) ;
16- } catch ( e ) {
17- if ( fs . existsSync ( pathname ) )
18- throw new Error ( `Something wonky happened rimrafing ${ pathname } ` ) ;
19- debug ( e ) ;
20- }
21- } ) ( ) ;
22-
23- // If (!st) then nothing to do.
24- if ( ! st ) {
25- return ;
26- }
27-
28- // On Windows first try to delegate rmdir to a shell.
29- if ( spawn && process . platform === 'win32' && st . isDirectory ( ) ) {
30- try {
31- // Try `rmdir` first.
32- execSync ( `rmdir /q /s ${ pathname } ` , { timeout : 1000 } ) ;
33- } catch ( e ) {
34- // Attempt failed. Log and carry on.
35- debug ( e ) ;
36- }
37- }
38-
39- fs . rmdirSync ( pathname , { recursive : true , maxRetries : 5 } ) ;
40-
41- if ( fs . existsSync ( pathname ) )
42- throw new Error ( `Unable to rimraf ${ pathname } ` ) ;
43- }
44-
458const testRoot = process . env . NODE_TEST_DIR ?
469 fs . realpathSync ( process . env . NODE_TEST_DIR ) : path . resolve ( __dirname , '..' ) ;
4710
@@ -52,8 +15,14 @@ const tmpdirName = '.tmp.' +
5215const tmpPath = path . join ( testRoot , tmpdirName ) ;
5316
5417let firstRefresh = true ;
55- function refresh ( opts = { } ) {
56- rimrafSync ( this . path , opts ) ;
18+ function refresh ( ) {
19+ try {
20+ fs . rmdirSync ( this . path , { recursive : true } ) ;
21+ } catch ( e ) {
22+ if ( e . code !== 'ENOENT' ) {
23+ throw e ;
24+ }
25+ }
5726 fs . mkdirSync ( this . path ) ;
5827
5928 if ( firstRefresh ) {
@@ -70,7 +39,7 @@ function onexit() {
7039 process . chdir ( testRoot ) ;
7140
7241 try {
73- rimrafSync ( tmpPath , { spawn : false } ) ;
42+ fs . rmdirSync ( tmpPath , { recursive : true } ) ;
7443 } catch ( e ) {
7544 console . error ( 'Can\'t clean tmpdir:' , tmpPath ) ;
7645
0 commit comments