mirror of https://github.com/nodejs/node.git
test: add cwd ENOENT known issue test
If the current working directory is removed, Node cannot start normally because the module system calls uv_cwd(). 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>pull/12343/head
parent
6331b63ce0
commit
4fc11998b4
|
@ -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