GeezerVison is showing github.com — test: move tmpdir to submodule of common · nodejs/node@a1b0d5d
File treeExpand file treeCollapse file tree Open diff view settings Some content is hiddenLarge Commits have some content hidden by default. Use the searchbox below for content that may be hidden. Dismiss bannerExpand file treeCollapse file tree Open diff view settings Collapse file 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 number | Diff line number | Diff line change |
|---|
| 2 | 2 |
| 3 | 3 | const assert = require('assert'); | 4 | 4 | const http = require('http'); | 5 | | -const fs = require('fs'); | 6 | 5 | const { fork } = require('child_process'); | 7 | 6 | 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'); | 9 | 9 | process.env.PIPE_NAME = PIPE; | 10 | 10 |
| 11 | | -try { | 12 | | - fs.accessSync(tmpDir, fs.F_OK); | 13 | | -} catch (e) { | 14 | | - fs.mkdirSync(tmpDir); | 15 | | -} | | 11 | +tmpdir.refresh(); | 16 | 12 |
| 17 | 13 | var server; | 18 | | -try { | 19 | | - fs.unlinkSync(process.env.PIPE_NAME); | 20 | | -} catch (e) { /* ignore */ } | 21 | 14 |
| 22 | 15 | server = http.createServer(function(req, res) { | 23 | 16 | const headers = { | |
Collapse file Copy file name to clipboardExpand all lines: benchmark/module/module-loader.js +4-4Lines changed: 4 additions & 4 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -3,8 +3,8 @@ const fs = require('fs'); | 3 | 3 | const path = require('path'); | 4 | 4 | const common = require('../common.js'); | 5 | 5 |
| 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'); | 8 | 8 |
| 9 | 9 | const bench = common.createBenchmark(main, { | 10 | 10 | thousands: [50], | @@ -15,7 +15,7 @@ const bench = common.createBenchmark(main, { | 15 | 15 | function main(conf) { | 16 | 16 | const n = +conf.thousands * 1e3; | 17 | 17 |
| 18 | | - refreshTmpDir(); | | 18 | + tmpdir.refresh(); | 19 | 19 | try { fs.mkdirSync(benchmarkDirectory); } catch (e) {} | 20 | 20 |
| 21 | 21 | for (var i = 0; i <= n; i++) { | @@ -35,7 +35,7 @@ function main(conf) { | 35 | 35 | else | 36 | 36 | measureDir(n, conf.useCache === 'true'); | 37 | 37 |
| 38 | | - refreshTmpDir(); | | 38 | + tmpdir.refresh(); | 39 | 39 | } | 40 | 40 |
| 41 | 41 | function measureFull(n, useCache) { | |
Collapse file Copy file name to clipboardExpand all lines: test/addons/load-long-path/test.js +3-2Lines changed: 3 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -7,12 +7,13 @@ const fs = require('fs'); | 7 | 7 | const path = require('path'); | 8 | 8 | const assert = require('assert'); | 9 | 9 |
| 10 | | -common.refreshTmpDir(); | | 10 | +const tmpdir = require('../../common/tmpdir'); | | 11 | +tmpdir.refresh(); | 11 | 12 |
| 12 | 13 | // make a path that is more than 260 chars long. | 13 | 14 | // Any given folder cannot have a name longer than 260 characters, | 14 | 15 | // 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); | 16 | 17 |
| 17 | 18 | for (let i = 0; i < 10; i++) { | 18 | 19 | addonDestinationDir = path.join(addonDestinationDir, 'x'.repeat(30)); | |
Collapse file Copy file name to clipboardExpand all lines: test/addons/symlinked-module/test.js +3-2Lines changed: 3 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -12,10 +12,11 @@ const assert = require('assert'); | 12 | 12 | // This test should pass in Node.js v4 and v5. This test will pass in Node.js | 13 | 13 | // with https://github.com/nodejs/node/pull/5950 reverted. | 14 | 14 |
| 15 | | -common.refreshTmpDir(); | | 15 | +const tmpdir = require('../../common/tmpdir'); | | 16 | +tmpdir.refresh(); | 16 | 17 |
| 17 | 18 | const addonPath = path.join(__dirname, 'build', common.buildType); | 18 | | -const addonLink = path.join(common.tmpDir, 'addon'); | | 19 | +const addonLink = path.join(tmpdir.path, 'addon'); | 19 | 20 |
| 20 | 21 | try { | 21 | 22 | fs.symlinkSync(addonPath, addonLink); | |
Collapse file Copy file name to clipboardExpand all lines: test/async-hooks/test-graph.pipeconnect.js +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -6,7 +6,8 @@ const verifyGraph = require('./verify-graph'); | 6 | 6 |
| 7 | 7 | const net = require('net'); | 8 | 8 |
| 9 | | -common.refreshTmpDir(); | | 9 | +const tmpdir = require('../common/tmpdir'); | | 10 | +tmpdir.refresh(); | 10 | 11 |
| 11 | 12 | const hooks = initHooks(); | 12 | 13 | hooks.enable(); | |
Collapse file Copy file name to clipboardExpand all lines: test/async-hooks/test-pipeconnectwrap.js +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -8,7 +8,8 @@ const { checkInvocations } = require('./hook-checks'); | 8 | 8 |
| 9 | 9 | const net = require('net'); | 10 | 10 |
| 11 | | -common.refreshTmpDir(); | | 11 | +const tmpdir = require('../common/tmpdir'); | | 12 | +tmpdir.refresh(); | 12 | 13 |
| 13 | 14 | const hooks = initHooks(); | 14 | 15 | hooks.enable(); | |
Collapse file 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 number | Diff line number | Diff line change |
|---|
@@ -10,6 +10,7 @@ This directory contains modules used to test the Node.js implementation. | 10 | 10 | * [DNS module](#dns-module) | 11 | 11 | * [Duplex pair helper](#duplex-pair-helper) | 12 | 12 | * [Fixtures module](#fixtures-module) | | 13 | +* [tmpdir module](#tmpdir-module) | 13 | 14 | * [WPT module](#wpt-module) | 14 | 15 |
| 15 | 16 | ## Benchmark Module | @@ -312,11 +313,6 @@ A port number for tests to use if one is needed. | 312 | 313 |
| 313 | 314 | Logs '1..0 # Skipped: ' + `msg` | 314 | 315 |
| 315 | | -### refreshTmpDir() | 316 | | -* return [<String>] | 317 | | - | 318 | | -Deletes the testing 'tmp' directory and recreates it. | 319 | | - | 320 | 316 | ### restoreStderr() | 321 | 317 |
| 322 | 318 | Restore the original `process.stderr.write`. Used to restore `stderr` to its | @@ -369,11 +365,6 @@ Platform normalizes the `pwd` command. | 369 | 365 |
| 370 | 366 | Synchronous version of `spawnPwd`. | 371 | 367 |
| 372 | | -### tmpDir | 373 | | -* [<String>] | 374 | | - | 375 | | -The realpath of the 'tmp' directory. | 376 | | - | 377 | 368 | ## Countdown Module | 378 | 369 |
| 379 | 370 | The `Countdown` module provides a simple countdown mechanism for tests that | @@ -492,6 +483,19 @@ Returns the result of | 492 | 483 | Returns the result of | 493 | 484 | `fs.readFileSync(path.join(fixtures.fixturesDir, 'keys', arg), 'enc')`. | 494 | 485 |
| | 486 | +## tmpdir Module | | 487 | + | | 488 | +The `tmpdir` module supports the use of a temporary directory for testing. | | 489 | + | | 490 | +### path | | 491 | +* [<String>] | | 492 | + | | 493 | +The realpath of the testing temporary directory. | | 494 | + | | 495 | +### refresh() | | 496 | + | | 497 | +Deletes and recreates the testing temporary directory. | | 498 | + | 495 | 499 | ## WPT Module | 496 | 500 |
| 497 | 501 | The wpt.js module is a port of parts of | |
Collapse file Copy file name to clipboardExpand all lines: test/common/index.js +2-64Lines changed: 2 additions & 64 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -30,15 +30,10 @@ const stream = require('stream'); | 30 | 30 | const util = require('util'); | 31 | 31 | const Timer = process.binding('timer_wrap').Timer; | 32 | 32 | 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'); | 36 | 34 |
| 37 | 35 | const noop = () => {}; | 38 | 36 |
| 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 | 37 | // PORT should match the definition in test/testpy/__init__.py. | 43 | 38 | exports.PORT = +process.env.NODE_COMMON_PORT || 12346; | 44 | 39 | exports.isWindows = process.platform === 'win32'; | @@ -121,63 +116,6 @@ if (process.env.NODE_TEST_WITH_ASYNC_HOOKS) { | 121 | 116 | }).enable(); | 122 | 117 | } | 123 | 118 |
| 124 | | -function rimrafSync(p) { | 125 | | - let st; | 126 | | - try { | 127 | | - st = fs.lstatSync(p); | 128 | | - } catch (e) { | 129 | | - if (e.code === 'ENOENT') | 130 | | - return; | 131 | | - } | 132 | | - | 133 | | - try { | 134 | | - if (st && st.isDirectory()) | 135 | | - rmdirSync(p, null); | 136 | | - else | 137 | | - fs.unlinkSync(p); | 138 | | - } catch (e) { | 139 | | - if (e.code === 'ENOENT') | 140 | | - return; | 141 | | - if (e.code === 'EPERM') | 142 | | - return rmdirSync(p, e); | 143 | | - if (e.code !== 'EISDIR') | 144 | | - throw e; | 145 | | - rmdirSync(p, e); | 146 | | - } | 147 | | -} | 148 | | - | 149 | | -function rmdirSync(p, originalEr) { | 150 | | - try { | 151 | | - fs.rmdirSync(p); | 152 | | - } catch (e) { | 153 | | - if (e.code === 'ENOTDIR') | 154 | | - throw originalEr; | 155 | | - if (e.code === 'ENOTEMPTY' || e.code === 'EEXIST' || e.code === 'EPERM') { | 156 | | - const enc = exports.isLinux ? 'buffer' : 'utf8'; | 157 | | - fs.readdirSync(p, enc).forEach((f) => { | 158 | | - if (f instanceof Buffer) { | 159 | | - const buf = Buffer.concat([Buffer.from(p), Buffer.from(path.sep), f]); | 160 | | - rimrafSync(buf); | 161 | | - } else { | 162 | | - rimrafSync(path.join(p, f)); | 163 | | - } | 164 | | - }); | 165 | | - fs.rmdirSync(p); | 166 | | - } | 167 | | - } | 168 | | -} | 169 | | - | 170 | | -exports.refreshTmpDir = function() { | 171 | | - rimrafSync(exports.tmpDir); | 172 | | - fs.mkdirSync(exports.tmpDir); | 173 | | -}; | 174 | | - | 175 | | -if (process.env.TEST_THREAD_ID) { | 176 | | - exports.PORT += process.env.TEST_THREAD_ID * 100; | 177 | | - tmpDirName += `.${process.env.TEST_THREAD_ID}`; | 178 | | -} | 179 | | -exports.tmpDir = path.join(testRoot, tmpDirName); | 180 | | - | 181 | 119 | let opensslCli = null; | 182 | 120 | let inFreeBSDJail = null; | 183 | 121 | let localhostIPv4 = null; | @@ -271,7 +209,7 @@ Object.defineProperty(exports, 'hasFipsCrypto', { | 271 | 209 | }); | 272 | 210 |
| 273 | 211 | { | 274 | | - const localRelative = path.relative(process.cwd(), `${exports.tmpDir}/`); | | 212 | + const localRelative = path.relative(process.cwd(), `${tmpdir.path}/`); | 275 | 213 | const pipePrefix = exports.isWindows ? '\\\\.\\pipe\\' : localRelative; | 276 | 214 | const pipeName = `node-test.${process.pid}.sock`; | 277 | 215 | exports.PIPE = path.join(pipePrefix, pipeName); | |
Collapse file Copy file name to clipboard +67Lines changed: 67 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| | 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 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 number | Diff line number | Diff line change |
|---|
@@ -7,8 +7,9 @@ const assert = require('assert'); | 7 | 7 | const path = require('path'); | 8 | 8 | const fs = require('fs'); | 9 | 9 |
| 10 | | -common.refreshTmpDir(); | 11 | | -const tmpDir = common.tmpDir; | | 10 | +const tmpdir = require('../common/tmpdir'); | | 11 | +tmpdir.refresh(); | | 12 | +const tmpDir = tmpdir.path; | 12 | 13 |
| 13 | 14 | const entry = path.join(tmpDir, 'entry.js'); | 14 | 15 | const real = path.join(tmpDir, 'real.js'); | |
|