summaryrefslogtreecommitdiff
path: root/test/parallel/test-internal-errors.js
diff options
context:
space:
mode:
authorJohn-David Dalton <john.david.dalton@gmail.com>2017-10-01 16:14:45 -0700
committerRich Trott <rtrott@gmail.com>2017-10-04 15:49:36 -0700
commit42a2a9badb6974e47b98aaee052e9710f34b93e8 (patch)
treeb7b6b05ccb7807e5d4fd4bad7071c96d8a024a9e /test/parallel/test-internal-errors.js
parent6e172beaf0390b037549c8484f4513bb79ccc84e (diff)
downloadandroid-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.js64
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();
}