test: resolve process.setgid() error on Ubuntu

When the tests are run as root in Ubuntu, process.setgid() is called
with 'nobody' as an argument. This throws an error in Ubuntu and is
because, in Ubuntu, the equivalent of 'nobody' group is named as
'nogroup'.

This commit sets gid to 'nobody' first and if it throws a "group id
does not exist" error, it attempts to set gid to 'nogroup'. If it still
causes an error, the error is thrown.

PR-URL: https://github.com/nodejs/node/pull/19755
Refs: https://github.com/nodejs/node/issues/19594
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
Divyanshu Singh 2018-04-02 22:10:01 +05:30 committed by Luigi Pinca
parent 2a88f02f2f
commit cc8a33edbc

View File

@ -61,7 +61,14 @@ if (process.getuid() !== 0) {
// If we are running as super user... // If we are running as super user...
const oldgid = process.getgid(); const oldgid = process.getgid();
process.setgid('nobody'); try {
process.setgid('nobody');
} catch (err) {
if (err.message !== 'setgid group id does not exist') {
throw err;
}
process.setgid('nogroup');
}
const newgid = process.getgid(); const newgid = process.getgid();
assert.notStrictEqual(newgid, oldgid); assert.notStrictEqual(newgid, oldgid);