Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit eb25252

Browse filesBrowse 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 <jasnell@gmail.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
1 parent ae372f0 commit eb25252
Copy full SHA for eb25252

File tree

Expand file treeCollapse file tree

155 files changed

+645
-456
lines changed
Open diff view settings
Filter options

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Dismiss banner
Expand file treeCollapse file tree

155 files changed

+645
-456
lines changed
Open diff view settings
Collapse file

‎benchmark/http/http_server_for_chunky_client.js‎

Copy file name to clipboardExpand all lines: benchmark/http/http_server_for_chunky_client.js
+3-10Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,15 @@
22

33
const assert = require('assert');
44
const http = require('http');
5-
const fs = require('fs');
65
const { fork } = require('child_process');
76
const common = require('../common.js');
8-
const { PIPE, tmpDir } = require('../../test/common');
7+
const { PIPE } = require('../../test/common');
8+
const tmpdir = 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
var server;
18-
try {
19-
fs.unlinkSync(process.env.PIPE_NAME);
20-
} catch (e) { /* ignore */ }
2114

2215
server = http.createServer(function(req, res) {
2316
const headers = {
Collapse file

‎benchmark/module/module-loader.js‎

Copy file name to clipboardExpand all lines: benchmark/module/module-loader.js
+4-4Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ const fs = require('fs');
33
const path = require('path');
44
const common = require('../common.js');
55

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

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

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

2121
for (var i = 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
function measureFull(n, useCache) {
Collapse file

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

Copy file name to clipboardExpand all lines: test/addons/load-long-path/test.js
+3-2Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ const fs = require('fs');
77
const path = require('path');
88
const assert = require('assert');
99

10-
common.refreshTmpDir();
10+
const tmpdir = 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-
let addonDestinationDir = path.resolve(common.tmpDir);
16+
let addonDestinationDir = path.resolve(tmpdir.path);
1617

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

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

Copy file name to clipboardExpand all lines: test/addons/symlinked-module/test.js
+3-2Lines 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+
const tmpdir = require('../../common/tmpdir');
16+
tmpdir.refresh();
1617

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

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

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

Copy file name to clipboardExpand all lines: test/async-hooks/test-graph.pipeconnect.js
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ const verifyGraph = require('./verify-graph');
66

77
const net = require('net');
88

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

1112
const hooks = initHooks();
1213
hooks.enable();
Collapse file

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

Copy file name to clipboardExpand all lines: test/async-hooks/test-pipeconnectwrap.js
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ const { checkInvocations } = require('./hook-checks');
88

99
const net = require('net');
1010

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

1314
const hooks = initHooks();
1415
hooks.enable();
Collapse file

‎test/common/README.md‎

Copy file name to clipboardExpand all lines: test/common/README.md
+14-10Lines changed: 14 additions & 10 deletions
  • Display the source diff
  • Display the rich diff
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
Collapse file

‎test/common/index.js‎

Copy file name to clipboardExpand all lines: test/common/index.js
+2-64Lines changed: 2 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,10 @@ const stream = require('stream');
3030
const util = require('util');
3131
const Timer = process.binding('timer_wrap').Timer;
3232
const { fixturesDir } = require('./fixtures');
33-
34-
const testRoot = process.env.NODE_TEST_DIR ?
35-
fs.realpathSync(process.env.NODE_TEST_DIR) : path.resolve(__dirname, '..');
33+
const tmpdir = require('./tmpdir');
3634

3735
const noop = () => {};
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-
let tmpDirName = '.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-
function rimrafSync(p) {
124-
let st;
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-
return rmdirSync(p, e);
142-
if (e.code !== 'EISDIR')
143-
throw e;
144-
rmdirSync(p, e);
145-
}
146-
}
147-
148-
function rmdirSync(p, originalEr) {
149-
try {
150-
fs.rmdirSync(p);
151-
} catch (e) {
152-
if (e.code === 'ENOTDIR')
153-
throw originalEr;
154-
if (e.code === 'ENOTEMPTY' || e.code === 'EEXIST' || e.code === 'EPERM') {
155-
const enc = exports.isLinux ? 'buffer' : 'utf8';
156-
fs.readdirSync(p, enc).forEach((f) => {
157-
if (f instanceof Buffer) {
158-
const buf = 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
let opensslCli = null;
180118
let inFreeBSDJail = null;
181119
let localhostIPv4 = null;
@@ -269,7 +207,7 @@ Object.defineProperty(exports, 'hasFipsCrypto', {
269207
});
270208

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

‎test/common/tmpdir.js‎

Copy file name to clipboard
+67Lines 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+
const fs = require('fs');
5+
const path = require('path');
6+
7+
function rimrafSync(p) {
8+
let st;
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+
return rmdirSync(p, e);
26+
if (e.code !== 'EISDIR')
27+
throw e;
28+
rmdirSync(p, e);
29+
}
30+
}
31+
32+
function rmdirSync(p, originalEr) {
33+
try {
34+
fs.rmdirSync(p);
35+
} catch (e) {
36+
if (e.code === 'ENOTDIR')
37+
throw originalEr;
38+
if (e.code === 'ENOTEMPTY' || e.code === 'EEXIST' || e.code === 'EPERM') {
39+
const enc = process.platform === 'linux' ? 'buffer' : 'utf8';
40+
fs.readdirSync(p, enc).forEach((f) => {
41+
if (f instanceof Buffer) {
42+
const buf = 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+
const testRoot = 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+
let tmpdirName = '.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+
};
Collapse file

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

Copy file name to clipboardExpand all lines: test/es-module/test-esm-preserve-symlinks.js
+3-2Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ const assert = require('assert');
77
const path = require('path');
88
const fs = require('fs');
99

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

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

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.