Skip to content

Commit eb25252

Browse files
TrottMylesBorins
authored andcommitted
test: move tmpdir to submodule of common
Move tmpdir functionality to its own module (common/tmpdir). PR-URL: #17856 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Joyee Cheung <[email protected]>
1 parent ae372f0 commit eb25252

File tree

155 files changed

+645
-456
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+645
-456
lines changed

‎benchmark/http/http_server_for_chunky_client.js‎

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,15 @@
22

33
constassert=require('assert');
44
consthttp=require('http');
5-
constfs=require('fs');
65
const{ fork }=require('child_process');
76
constcommon=require('../common.js');
8-
const{PIPE, tmpDir }=require('../../test/common');
7+
const{PIPE}=require('../../test/common');
8+
consttmpdir=require('../../test/common/tmpdir');
99
process.env.PIPE_NAME=PIPE;
1010

11-
try{
12-
fs.accessSync(tmpDir,fs.F_OK);
13-
}catch(e){
14-
fs.mkdirSync(tmpDir);
15-
}
11+
tmpdir.refresh();
1612

1713
varserver;
18-
try{
19-
fs.unlinkSync(process.env.PIPE_NAME);
20-
}catch(e){/* ignore */}
2114

2215
server=http.createServer(function(req,res){
2316
constheaders={

‎benchmark/module/module-loader.js‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ const fs = require('fs');
33
constpath=require('path');
44
constcommon=require('../common.js');
55

6-
const{ refreshTmpDir, tmpDir }=require('../../test/common');
7-
constbenchmarkDirectory=path.join(tmpDir,'nodejs-benchmark-module');
6+
consttmpdir=require('../../test/common/tmpdir');
7+
constbenchmarkDirectory=path.join(tmpdir.path,'nodejs-benchmark-module');
88

99
constbench=common.createBenchmark(main,{
1010
thousands: [50],
@@ -15,7 +15,7 @@ const bench = common.createBenchmark(main,{
1515
functionmain({ thousands, fullPath, useCache }){
1616
constn=thousands*1e3;
1717

18-
refreshTmpDir();
18+
tmpdir.refresh();
1919
try{fs.mkdirSync(benchmarkDirectory);}catch(e){}
2020

2121
for(vari=0;i<=n;i++){
@@ -35,7 +35,7 @@ function main({thousands, fullPath, useCache }){
3535
else
3636
measureDir(n,useCache==='true');
3737

38-
refreshTmpDir();
38+
tmpdir.refresh();
3939
}
4040

4141
functionmeasureFull(n,useCache){

‎test/addons/load-long-path/test.js‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ const fs = require('fs');
77
constpath=require('path');
88
constassert=require('assert');
99

10-
common.refreshTmpDir();
10+
consttmpdir=require('../../common/tmpdir');
11+
tmpdir.refresh();
1112

1213
// make a path that is more than 260 chars long.
1314
// Any given folder cannot have a name longer than 260 characters,
1415
// so create 10 nested folders each with 30 character long names.
15-
letaddonDestinationDir=path.resolve(common.tmpDir);
16+
letaddonDestinationDir=path.resolve(tmpdir.path);
1617

1718
for(leti=0;i<10;i++){
1819
addonDestinationDir=path.join(addonDestinationDir,'x'.repeat(30));

‎test/addons/symlinked-module/test.js‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ const assert = require('assert');
1212
// This test should pass in Node.js v4 and v5. This test will pass in Node.js
1313
// with https://github.com/nodejs/node/pull/5950 reverted.
1414

15-
common.refreshTmpDir();
15+
consttmpdir=require('../../common/tmpdir');
16+
tmpdir.refresh();
1617

1718
constaddonPath=path.join(__dirname,'build',common.buildType);
18-
constaddonLink=path.join(common.tmpDir,'addon');
19+
constaddonLink=path.join(tmpdir.path,'addon');
1920

2021
try{
2122
fs.symlinkSync(addonPath,addonLink);

‎test/async-hooks/test-graph.pipeconnect.js‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ const verifyGraph = require('./verify-graph');
66

77
constnet=require('net');
88

9-
common.refreshTmpDir();
9+
consttmpdir=require('../common/tmpdir');
10+
tmpdir.refresh();
1011

1112
consthooks=initHooks();
1213
hooks.enable();

‎test/async-hooks/test-pipeconnectwrap.js‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ const{checkInvocations } = require('./hook-checks');
88

99
constnet=require('net');
1010

11-
common.refreshTmpDir();
11+
consttmpdir=require('../common/tmpdir');
12+
tmpdir.refresh();
1213

1314
consthooks=initHooks();
1415
hooks.enable();

‎test/common/README.md‎

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ This directory contains modules used to test the Node.js implementation.
1212
*[Fixtures module](#fixtures-module)
1313
*[HTTP2 module](#http2-module)
1414
*[Internet module](#internet-module)
15+
*[tmpdir module](#tmpdir-module)
1516
*[WPT module](#wpt-module)
1617

1718
## Benchmark Module
@@ -332,11 +333,6 @@ A port number for tests to use if one is needed.
332333

333334
Logs '1..0 # Skipped: ' + `msg`
334335

335-
### refreshTmpDir()
336-
* return [&lt;String>]
337-
338-
Deletes the testing 'tmp' directory and recreates it.
339-
340336
### restoreStderr()
341337

342338
Restore the original `process.stderr.write`. Used to restore `stderr` to its
@@ -384,11 +380,6 @@ Platform normalizes the `pwd` command.
384380

385381
Synchronous version of `spawnPwd`.
386382

387-
### tmpDir
388-
*[&lt;String>]
389-
390-
The realpath of the 'tmp' directory.
391-
392383
## Countdown Module
393384

394385
The `Countdown` module provides a simple countdown mechanism for tests that
@@ -670,6 +661,19 @@ via `NODE_TEST_*` environment variables. For example, to configure
670661
`internet.addresses.INET_HOST`, set the environment
671662
variable `NODE_TEST_INET_HOST` to a specified host.
672663

664+
## tmpdir Module
665+
666+
The `tmpdir` module supports the use of a temporary directory for testing.
667+
668+
### path
669+
*[&lt;String>]
670+
671+
The realpath of the testing temporary directory.
672+
673+
### refresh()
674+
675+
Deletes and recreates the testing temporary directory.
676+
673677
## WPT Module
674678

675679
The wpt.js module is a port of parts of

‎test/common/index.js‎

Lines changed: 2 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,10 @@ const stream = require('stream');
3030
constutil=require('util');
3131
constTimer=process.binding('timer_wrap').Timer;
3232
const{ fixturesDir }=require('./fixtures');
33-
34-
consttestRoot=process.env.NODE_TEST_DIR ?
35-
fs.realpathSync(process.env.NODE_TEST_DIR) : path.resolve(__dirname,'..');
33+
consttmpdir=require('./tmpdir');
3634

3735
constnoop=()=>{};
3836

39-
// Using a `.` prefixed name, which is the convention for "hidden" on POSIX,
40-
// gets tools to ignore it by default or by simple rules, especially eslint.
41-
lettmpDirName='.tmp';
42-
4337
Object.defineProperty(exports,'PORT',{
4438
get: ()=>{
4539
if(+process.env.TEST_PARALLEL){
@@ -120,62 +114,6 @@ if (process.env.NODE_TEST_WITH_ASYNC_HOOKS){
120114
}).enable();
121115
}
122116

123-
functionrimrafSync(p){
124-
letst;
125-
try{
126-
st=fs.lstatSync(p);
127-
}catch(e){
128-
if(e.code==='ENOENT')
129-
return;
130-
}
131-
132-
try{
133-
if(st&&st.isDirectory())
134-
rmdirSync(p,null);
135-
else
136-
fs.unlinkSync(p);
137-
}catch(e){
138-
if(e.code==='ENOENT')
139-
return;
140-
if(e.code==='EPERM')
141-
returnrmdirSync(p,e);
142-
if(e.code!=='EISDIR')
143-
throwe;
144-
rmdirSync(p,e);
145-
}
146-
}
147-
148-
functionrmdirSync(p,originalEr){
149-
try{
150-
fs.rmdirSync(p);
151-
}catch(e){
152-
if(e.code==='ENOTDIR')
153-
throworiginalEr;
154-
if(e.code==='ENOTEMPTY'||e.code==='EEXIST'||e.code==='EPERM'){
155-
constenc=exports.isLinux ? 'buffer' : 'utf8';
156-
fs.readdirSync(p,enc).forEach((f)=>{
157-
if(finstanceofBuffer){
158-
constbuf=Buffer.concat([Buffer.from(p),Buffer.from(path.sep),f]);
159-
rimrafSync(buf);
160-
}else{
161-
rimrafSync(path.join(p,f));
162-
}
163-
});
164-
fs.rmdirSync(p);
165-
}
166-
}
167-
}
168-
169-
exports.refreshTmpDir=function(){
170-
rimrafSync(exports.tmpDir);
171-
fs.mkdirSync(exports.tmpDir);
172-
};
173-
174-
if(process.env.TEST_THREAD_ID){
175-
tmpDirName+=`.${process.env.TEST_THREAD_ID}`;
176-
}
177-
exports.tmpDir=path.join(testRoot,tmpDirName);
178-
179117
letopensslCli=null;
180118
letinFreeBSDJail=null;
181119
letlocalhostIPv4=null;
@@ -269,7 +207,7 @@ Object.defineProperty(exports, 'hasFipsCrypto',{
269207
});
270208

271209
{
272-
constlocalRelative=path.relative(process.cwd(),`${exports.tmpDir}/`);
210+
constlocalRelative=path.relative(process.cwd(),`${tmpdir.path}/`);
273211
constpipePrefix=exports.isWindows ? '\\\\.\\pipe\\' : localRelative;
274212
constpipeName=`node-test.${process.pid}.sock`;
275213
exports.PIPE=path.join(pipePrefix,pipeName);

‎test/common/tmpdir.js‎

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/* eslint-disable required-modules */
2+
'use strict';
3+
4+
constfs=require('fs');
5+
constpath=require('path');
6+
7+
functionrimrafSync(p){
8+
letst;
9+
try{
10+
st=fs.lstatSync(p);
11+
}catch(e){
12+
if(e.code==='ENOENT')
13+
return;
14+
}
15+
16+
try{
17+
if(st&&st.isDirectory())
18+
rmdirSync(p,null);
19+
else
20+
fs.unlinkSync(p);
21+
}catch(e){
22+
if(e.code==='ENOENT')
23+
return;
24+
if(e.code==='EPERM')
25+
returnrmdirSync(p,e);
26+
if(e.code!=='EISDIR')
27+
throwe;
28+
rmdirSync(p,e);
29+
}
30+
}
31+
32+
functionrmdirSync(p,originalEr){
33+
try{
34+
fs.rmdirSync(p);
35+
}catch(e){
36+
if(e.code==='ENOTDIR')
37+
throworiginalEr;
38+
if(e.code==='ENOTEMPTY'||e.code==='EEXIST'||e.code==='EPERM'){
39+
constenc=process.platform==='linux' ? 'buffer' : 'utf8';
40+
fs.readdirSync(p,enc).forEach((f)=>{
41+
if(finstanceofBuffer){
42+
constbuf=Buffer.concat([Buffer.from(p),Buffer.from(path.sep),f]);
43+
rimrafSync(buf);
44+
}else{
45+
rimrafSync(path.join(p,f));
46+
}
47+
});
48+
fs.rmdirSync(p);
49+
}
50+
}
51+
}
52+
53+
consttestRoot=process.env.NODE_TEST_DIR ?
54+
fs.realpathSync(process.env.NODE_TEST_DIR) : path.resolve(__dirname,'..');
55+
56+
// Using a `.` prefixed name, which is the convention for "hidden" on POSIX,
57+
// gets tools to ignore it by default or by simple rules, especially eslint.
58+
lettmpdirName='.tmp';
59+
if(process.env.TEST_THREAD_ID){
60+
tmpdirName+=`.${process.env.TEST_THREAD_ID}`;
61+
}
62+
exports.path=path.join(testRoot,tmpdirName);
63+
64+
exports.refresh=()=>{
65+
rimrafSync(exports.path);
66+
fs.mkdirSync(exports.path);
67+
};

‎test/es-module/test-esm-preserve-symlinks.js‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ const assert = require('assert');
77
constpath=require('path');
88
constfs=require('fs');
99

10-
common.refreshTmpDir();
11-
consttmpDir=common.tmpDir;
10+
consttmpdir=require('../common/tmpdir');
11+
tmpdir.refresh();
12+
consttmpDir=tmpdir.path;
1213

1314
constentry=path.join(tmpDir,'entry.js');
1415
constreal=path.join(tmpDir,'real.js');

0 commit comments

Comments
(0)