mirror of https://github.com/lukechilds/node.git
Browse Source
If the current working directory is removed, Node cannot start normally because the module system calls uv_cwd(). Backport-PR-URL: https://github.com/nodejs/node/pull/15479 Refs: https://github.com/nodejs/node/pull/12022 PR-URL: https://github.com/nodejs/node/pull/12343 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>v6.x-staging
cjihrig
8 years ago
committed by
Myles Borins
1 changed files with 34 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||||
|
'use strict'; |
||||
|
// Refs: https://github.com/nodejs/node/pull/12022
|
||||
|
// If the cwd is deleted, Node cannot run files because the module system
|
||||
|
// relies on uv_cwd(). The -e and -p flags still work though.
|
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
|
||||
|
if (common.isSunOS || common.isWindows || common.isAix) { |
||||
|
// The current working directory cannot be removed on these platforms.
|
||||
|
// Change this to common.skip() when this is no longer a known issue test.
|
||||
|
assert.fail('cannot rmdir current working directory'); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
const cp = require('child_process'); |
||||
|
const fs = require('fs'); |
||||
|
|
||||
|
if (process.argv[2] === 'child') { |
||||
|
// Do nothing.
|
||||
|
} else { |
||||
|
common.refreshTmpDir(); |
||||
|
const dir = fs.mkdtempSync(common.tmpDir + '/'); |
||||
|
process.chdir(dir); |
||||
|
fs.rmdirSync(dir); |
||||
|
assert.throws(process.cwd, |
||||
|
/^Error: ENOENT: no such file or directory, uv_cwd$/); |
||||
|
|
||||
|
const r = cp.spawnSync(process.execPath, [__filename, 'child']); |
||||
|
|
||||
|
assert.strictEqual(r.status, 0); |
||||
|
assert.strictEqual(r.signal, null); |
||||
|
assert.strictEqual(r.stdout.toString().trim(), ''); |
||||
|
assert.strictEqual(r.stderr.toString().trim(), ''); |
||||
|
} |
Loading…
Reference in new issue