-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
assert: fix AssertionError, assign error code
Using `assert.AssertionError()` without the `new` keyword results in a non-intuitive error: ```js > assert.AssertionError({}) TypeError: Cannot assign to read only property 'name' of function 'function ok(value, message) { if (!value) fail(value, true, message, '==', assert.ok); }' at Function.AssertionError (assert.js:45:13) at repl:1:8 at realRunInThisContextScript (vm.js:22:35) at sigintHandlersWrap (vm.js:98:12) at ContextifyScript.Script.runInThisContext (vm.js:24:12) at REPLServer.defaultEval (repl.js:346:29) at bound (domain.js:280:14) at REPLServer.runBound [as eval] (domain.js:293:12) at REPLServer.onLine (repl.js:545:10) at emitOne (events.js:101:20) > ``` The `assert.AssertionError()` can only be used correctly with `new`, so this converts it into a proper ES6 class that will give an appropriate error message. This also associates the appropriate internal/errors code with all `assert.AssertionError` instances and updates the appropriate test cases. PR-URL: #12651 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
- Loading branch information
Showing
12 changed files
with
279 additions
and
109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,53 @@ | ||
'use strict'; | ||
require('../common'); | ||
const common = require('../common'); | ||
const assert = require('assert'); | ||
|
||
// no args | ||
assert.throws( | ||
() => { assert.fail(); }, | ||
/^AssertionError: undefined undefined undefined$/ | ||
common.expectsError({ | ||
code: 'ERR_ASSERTION', | ||
type: assert.AssertionError, | ||
message: 'undefined undefined undefined' | ||
}) | ||
); | ||
|
||
// one arg = message | ||
assert.throws( | ||
() => { assert.fail('custom message'); }, | ||
/^AssertionError: custom message$/ | ||
common.expectsError({ | ||
code: 'ERR_ASSERTION', | ||
type: assert.AssertionError, | ||
message: 'custom message' | ||
}) | ||
); | ||
|
||
// two args only, operator defaults to '!=' | ||
assert.throws( | ||
() => { assert.fail('first', 'second'); }, | ||
/^AssertionError: 'first' != 'second'$/ | ||
common.expectsError({ | ||
code: 'ERR_ASSERTION', | ||
type: assert.AssertionError, | ||
message: '\'first\' != \'second\'' | ||
}) | ||
); | ||
|
||
// three args | ||
assert.throws( | ||
() => { assert.fail('ignored', 'ignored', 'another custom message'); }, | ||
/^AssertionError: another custom message$/ | ||
common.expectsError({ | ||
code: 'ERR_ASSERTION', | ||
type: assert.AssertionError, | ||
message: 'another custom message' | ||
}) | ||
); | ||
|
||
// no third arg (but a fourth arg) | ||
assert.throws( | ||
() => { assert.fail('first', 'second', undefined, 'operator'); }, | ||
/^AssertionError: 'first' operator 'second'$/ | ||
common.expectsError({ | ||
code: 'ERR_ASSERTION', | ||
type: assert.AssertionError, | ||
message: '\'first\' operator \'second\'' | ||
}) | ||
); |
Oops, something went wrong.