diff options
author | cjihrig <cjihrig@gmail.com> | 2019-01-15 14:12:57 -0500 |
---|---|---|
committer | cjihrig <cjihrig@gmail.com> | 2019-02-05 18:50:10 -0500 |
commit | 12b3cfcea686e2bd01c4d17d0835b74710ce950c (patch) | |
tree | 8a41179b93e3ec126b4c416075bfe925d614ec5c /test/parallel | |
parent | 62b4796e369895e614e22bb176702f2499317f4a (diff) | |
download | android-node-v8-12b3cfcea686e2bd01c4d17d0835b74710ce950c.tar.gz android-node-v8-12b3cfcea686e2bd01c4d17d0835b74710ce950c.tar.bz2 android-node-v8-12b3cfcea686e2bd01c4d17d0835b74710ce950c.zip |
process: stub unsupported worker methods
Some process methods are not supported in workers. This commit
adds stubs that throw more informative errors.
PR-URL: https://github.com/nodejs/node/pull/25587
Fixes: https://github.com/nodejs/node/issues/25448
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'test/parallel')
-rw-r--r-- | test/parallel/test-process-euid-egid.js | 11 | ||||
-rw-r--r-- | test/parallel/test-process-initgroups.js | 5 | ||||
-rw-r--r-- | test/parallel/test-process-setgroups.js | 5 | ||||
-rw-r--r-- | test/parallel/test-process-uid-gid.js | 13 | ||||
-rw-r--r-- | test/parallel/test-worker-unsupported-things.js | 34 |
5 files changed, 45 insertions, 23 deletions
diff --git a/test/parallel/test-process-euid-egid.js b/test/parallel/test-process-euid-egid.js index 5639163bf3..b9e0630dab 100644 --- a/test/parallel/test-process-euid-egid.js +++ b/test/parallel/test-process-euid-egid.js @@ -3,16 +3,17 @@ const common = require('../common'); const assert = require('assert'); -if (common.isWindows || !common.isMainThread) { - if (common.isMainThread) { - assert.strictEqual(process.geteuid, undefined); - assert.strictEqual(process.getegid, undefined); - } +if (common.isWindows) { + assert.strictEqual(process.geteuid, undefined); + assert.strictEqual(process.getegid, undefined); assert.strictEqual(process.seteuid, undefined); assert.strictEqual(process.setegid, undefined); return; } +if (!common.isMainThread) + return; + assert.throws(() => { process.seteuid({}); }, { diff --git a/test/parallel/test-process-initgroups.js b/test/parallel/test-process-initgroups.js index 49b8833f61..f5e839b1d2 100644 --- a/test/parallel/test-process-initgroups.js +++ b/test/parallel/test-process-initgroups.js @@ -2,11 +2,14 @@ const common = require('../common'); const assert = require('assert'); -if (common.isWindows || !common.isMainThread) { +if (common.isWindows) { assert.strictEqual(process.initgroups, undefined); return; } +if (!common.isMainThread) + return; + [undefined, null, true, {}, [], () => {}].forEach((val) => { assert.throws( () => { diff --git a/test/parallel/test-process-setgroups.js b/test/parallel/test-process-setgroups.js index a85d668316..74de3e7a25 100644 --- a/test/parallel/test-process-setgroups.js +++ b/test/parallel/test-process-setgroups.js @@ -2,11 +2,14 @@ const common = require('../common'); const assert = require('assert'); -if (common.isWindows || !common.isMainThread) { +if (common.isWindows) { assert.strictEqual(process.setgroups, undefined); return; } +if (!common.isMainThread) + return; + assert.throws( () => { process.setgroups(); diff --git a/test/parallel/test-process-uid-gid.js b/test/parallel/test-process-uid-gid.js index 456cba7f4d..49086792b9 100644 --- a/test/parallel/test-process-uid-gid.js +++ b/test/parallel/test-process-uid-gid.js @@ -24,17 +24,18 @@ const common = require('../common'); const assert = require('assert'); -if (common.isWindows || !common.isMainThread) { - // uid/gid functions are POSIX only, setters are main-thread only. - if (common.isMainThread) { - assert.strictEqual(process.getuid, undefined); - assert.strictEqual(process.getgid, undefined); - } +if (common.isWindows) { + // uid/gid functions are POSIX only. + assert.strictEqual(process.getuid, undefined); + assert.strictEqual(process.getgid, undefined); assert.strictEqual(process.setuid, undefined); assert.strictEqual(process.setgid, undefined); return; } +if (!common.isMainThread) + return; + assert.throws(() => { process.setuid({}); }, { diff --git a/test/parallel/test-worker-unsupported-things.js b/test/parallel/test-worker-unsupported-things.js index 66b10ad157..cc9eec4af6 100644 --- a/test/parallel/test-worker-unsupported-things.js +++ b/test/parallel/test-worker-unsupported-things.js @@ -1,9 +1,12 @@ 'use strict'; const common = require('../common'); const assert = require('assert'); -const { Worker, isMainThread, parentPort } = require('worker_threads'); +const { Worker, parentPort } = require('worker_threads'); -if (isMainThread) { +// Do not use isMainThread so that this test itself can be run inside a Worker. +if (!process.env.HAS_STARTED_WORKER) { + process.env.HAS_STARTED_WORKER = 1; + process.env.NODE_CHANNEL_FD = 'foo'; // Make worker think it has IPC. const w = new Worker(__filename); w.on('message', common.mustCall((message) => { assert.strictEqual(message, true); @@ -21,14 +24,25 @@ if (isMainThread) { assert.strictEqual(process.debugPort, before); } - assert.strictEqual('abort' in process, false); - assert.strictEqual('chdir' in process, false); - assert.strictEqual('setuid' in process, false); - assert.strictEqual('seteuid' in process, false); - assert.strictEqual('setgid' in process, false); - assert.strictEqual('setegid' in process, false); - assert.strictEqual('setgroups' in process, false); - assert.strictEqual('initgroups' in process, false); + const stubs = ['abort', 'chdir', 'send', 'disconnect']; + + if (!common.isWindows) { + stubs.push('setuid', 'seteuid', 'setgid', + 'setegid', 'setgroups', 'initgroups'); + } + + stubs.forEach((fn) => { + assert.strictEqual(process[fn].disabled, true); + assert.throws(() => { + process[fn](); + }, { code: 'ERR_WORKER_UNSUPPORTED_OPERATION' }); + }); + + ['channel', 'connected'].forEach((fn) => { + assert.throws(() => { + process[fn]; + }, { code: 'ERR_WORKER_UNSUPPORTED_OPERATION' }); + }); assert.strictEqual('_startProfilerIdleNotifier' in process, false); assert.strictEqual('_stopProfilerIdleNotifier' in process, false); |