diff options
author | John-David Dalton <john.david.dalton@gmail.com> | 2017-10-01 16:14:45 -0700 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2017-10-04 15:49:36 -0700 |
commit | 42a2a9badb6974e47b98aaee052e9710f34b93e8 (patch) | |
tree | b7b6b05ccb7807e5d4fd4bad7071c96d8a024a9e /test/parallel/test-internal-errors.js | |
parent | 6e172beaf0390b037549c8484f4513bb79ccc84e (diff) | |
download | android-node-v8-42a2a9badb6974e47b98aaee052e9710f34b93e8.tar.gz android-node-v8-42a2a9badb6974e47b98aaee052e9710f34b93e8.tar.bz2 android-node-v8-42a2a9badb6974e47b98aaee052e9710f34b93e8.zip |
errors: make `code` and `name` properties settable
For internal errors, make `code` and `name` settable while keeping them
non-own properties by default.
PR-URL: https://github.com/nodejs/node/pull/15694
Fixes: https://github.com/nodejs/node/issues/15658
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Diffstat (limited to 'test/parallel/test-internal-errors.js')
-rw-r--r-- | test/parallel/test-internal-errors.js | 64 |
1 files changed, 39 insertions, 25 deletions
diff --git a/test/parallel/test-internal-errors.js b/test/parallel/test-internal-errors.js index c16036c21d..84bdf765e5 100644 --- a/test/parallel/test-internal-errors.js +++ b/test/parallel/test-internal-errors.js @@ -307,38 +307,52 @@ assert.strictEqual( { const myError = new errors.Error('ERR_TLS_HANDSHAKE_TIMEOUT'); assert.strictEqual(myError.code, 'ERR_TLS_HANDSHAKE_TIMEOUT'); + assert.strictEqual(myError.hasOwnProperty('code'), false); + assert.strictEqual(myError.hasOwnProperty('name'), false); + assert.deepStrictEqual(Object.keys(myError), []); const initialName = myError.name; myError.code = 'FHQWHGADS'; assert.strictEqual(myError.code, 'FHQWHGADS'); assert.strictEqual(myError.name, initialName); + assert.deepStrictEqual(Object.keys(myError), ['code']); assert.ok(myError.name.includes('ERR_TLS_HANDSHAKE_TIMEOUT')); assert.ok(!myError.name.includes('FHQWHGADS')); } -// Test that `name` and `message` are mutable and that changing them alters -// `toString()` but not `console.log()` results, which is the behavior of -// `Error` objects in the browser. +// Test that `name` is mutable and that changing it alters `toString()` but not +// `console.log()` results, which is the behavior of `Error` objects in the +// browser. Note that `name` becomes enumerable after being assigned. { - function test(prop) { - let initialConsoleLog = ''; - common.hijackStdout((data) => { initialConsoleLog += data; }); - const myError = new errors.Error('ERR_TLS_HANDSHAKE_TIMEOUT'); - const initialToString = myError.toString(); - console.log(myError); - assert.notStrictEqual(initialConsoleLog, ''); - - common.restoreStdout(); - - let subsequentConsoleLog = ''; - common.hijackStdout((data) => { subsequentConsoleLog += data; }); - myError[prop] = 'Fhqwhgads'; - assert.notStrictEqual(myError.toString(), initialToString); - console.log(myError); - assert.strictEqual(subsequentConsoleLog, initialConsoleLog); - - common.restoreStdout(); - } - - test('name'); - test('message'); + const myError = new errors.Error('ERR_TLS_HANDSHAKE_TIMEOUT'); + assert.deepStrictEqual(Object.keys(myError), []); + const initialToString = myError.toString(); + + myError.name = 'Fhqwhgads'; + assert.deepStrictEqual(Object.keys(myError), ['name']); + assert.notStrictEqual(myError.toString(), initialToString); +} + +// Test that `message` is mutable and that changing it alters `toString()` but +// not `console.log()` results, which is the behavior of `Error` objects in the +// browser. Note that `message` remains non-enumerable after being assigned. +{ + let initialConsoleLog = ''; + common.hijackStdout((data) => { initialConsoleLog += data; }); + const myError = new errors.Error('ERR_TLS_HANDSHAKE_TIMEOUT'); + assert.deepStrictEqual(Object.keys(myError), []); + const initialToString = myError.toString(); + console.log(myError); + assert.notStrictEqual(initialConsoleLog, ''); + + common.restoreStdout(); + + let subsequentConsoleLog = ''; + common.hijackStdout((data) => { subsequentConsoleLog += data; }); + myError.message = 'Fhqwhgads'; + assert.deepStrictEqual(Object.keys(myError), []); + assert.notStrictEqual(myError.toString(), initialToString); + console.log(myError); + assert.strictEqual(subsequentConsoleLog, initialConsoleLog); + + common.restoreStdout(); } |