summaryrefslogtreecommitdiff
path: root/test/parallel
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-01-15 14:12:57 -0500
committercjihrig <cjihrig@gmail.com>2019-02-05 18:50:10 -0500
commit12b3cfcea686e2bd01c4d17d0835b74710ce950c (patch)
tree8a41179b93e3ec126b4c416075bfe925d614ec5c /test/parallel
parent62b4796e369895e614e22bb176702f2499317f4a (diff)
downloadandroid-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.js11
-rw-r--r--test/parallel/test-process-initgroups.js5
-rw-r--r--test/parallel/test-process-setgroups.js5
-rw-r--r--test/parallel/test-process-uid-gid.js13
-rw-r--r--test/parallel/test-worker-unsupported-things.js34
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);