mirror of
https://github.com/nodejs/node.git
synced 2025-05-05 15:32:15 +00:00

1aa595e5bd
introduced a `throw` for accessing `Symbol` properties of
`process.env`. However, this breaks `util.inspect(process)` and
things like `Object.prototype.toString.call(process.env)`, so this
patch changes the behaviour for the getter to just always return
`undefined`.
Ref: https://github.com/nodejs/node/pull/9446
Fixes: https://github.com/nodejs/node/issues/9641
PR-URL: https://github.com/nodejs/node/pull/9631
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
28 lines
789 B
JavaScript
28 lines
789 B
JavaScript
'use strict';
|
||
require('../common');
|
||
|
||
const assert = require('assert');
|
||
const symbol = Symbol('sym');
|
||
const errRegExp = /^TypeError: Cannot convert a Symbol value to a string$/;
|
||
|
||
// Verify that getting via a symbol key returns undefined.
|
||
assert.strictEqual(process.env[symbol], undefined);
|
||
|
||
// Verify that assigning via a symbol key throws.
|
||
assert.throws(() => {
|
||
process.env[symbol] = 42;
|
||
}, errRegExp);
|
||
|
||
// Verify that assigning a symbol value throws.
|
||
assert.throws(() => {
|
||
process.env.foo = symbol;
|
||
}, errRegExp);
|
||
|
||
// Verify that using a symbol with the in operator throws.
|
||
assert.throws(() => {
|
||
symbol in process.env;
|
||
}, errRegExp);
|
||
|
||
// Checks that well-known symbols like `Symbol.toStringTag` won’t throw.
|
||
assert.doesNotThrow(() => Object.prototype.toString.call(process.env));
|