mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
test: try to stabalize test-child-process-fork-exec-path.js
PR-URL: https://github.com/nodejs/node/pull/27277 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
parent
002dacb7f7
commit
4f8b497991
@ -21,45 +21,41 @@
|
||||
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
const fs = require('fs');
|
||||
const { COPYFILE_FICLONE } = fs.constants;
|
||||
const path = require('path');
|
||||
|
||||
// Test that `fork()` respects the `execPath` option.
|
||||
|
||||
const tmpdir = require('../common/tmpdir');
|
||||
const { addLibraryPath } = require('../common/shared-lib-util');
|
||||
const assert = require('assert');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { fork } = require('child_process');
|
||||
|
||||
const msg = { test: 'this' };
|
||||
const nodePath = process.execPath;
|
||||
const copyPath = path.join(tmpdir.path, 'node-copy.exe');
|
||||
const { addLibraryPath } = require('../common/shared-lib-util');
|
||||
|
||||
addLibraryPath(process.env);
|
||||
|
||||
// Child
|
||||
if (process.env.FORK) {
|
||||
assert(process.send);
|
||||
assert.strictEqual(process.argv[0], copyPath);
|
||||
assert.strictEqual(process.execPath, copyPath);
|
||||
assert.ok(process.send);
|
||||
process.send(msg);
|
||||
process.exit();
|
||||
} else {
|
||||
tmpdir.refresh();
|
||||
try {
|
||||
fs.unlinkSync(copyPath);
|
||||
} catch (e) {
|
||||
if (e.code !== 'ENOENT') throw e;
|
||||
}
|
||||
fs.copyFileSync(nodePath, copyPath, COPYFILE_FICLONE);
|
||||
fs.chmodSync(copyPath, '0755');
|
||||
|
||||
// slow but simple
|
||||
const envCopy = JSON.parse(JSON.stringify(process.env));
|
||||
envCopy.FORK = 'true';
|
||||
const child = require('child_process').fork(__filename, {
|
||||
execPath: copyPath,
|
||||
env: envCopy
|
||||
});
|
||||
child.on('message', common.mustCall(function(recv) {
|
||||
assert.deepStrictEqual(msg, recv);
|
||||
}));
|
||||
child.on('exit', common.mustCall(function(code) {
|
||||
fs.unlinkSync(copyPath);
|
||||
assert.strictEqual(code, 0);
|
||||
}));
|
||||
return process.exit();
|
||||
}
|
||||
|
||||
// Parent
|
||||
tmpdir.refresh();
|
||||
assert.strictEqual(fs.existsSync(copyPath), false);
|
||||
fs.copyFileSync(nodePath, copyPath, fs.constants.COPYFILE_FICLONE);
|
||||
fs.chmodSync(copyPath, '0755');
|
||||
|
||||
const envCopy = Object.assign({}, process.env, { 'FORK': 'true' });
|
||||
const child = fork(__filename, { execPath: copyPath, env: envCopy });
|
||||
child.on('message', common.mustCall(function(recv) {
|
||||
assert.deepStrictEqual(recv, msg);
|
||||
}));
|
||||
child.on('exit', common.mustCall(function(code) {
|
||||
assert.strictEqual(code, 0);
|
||||
}));
|
||||
|
Loading…
Reference in New Issue
Block a user