assert: stricter ifError
This makes `assert.ifError` stricter by only accepting `null` and `undefined` from now on. Before any truthy value was accepted. PR-URL: https://github.com/nodejs/node/pull/18247 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
8e6e1c9dcc
commit
e65a6e81ef
@ -474,11 +474,15 @@ changes:
|
|||||||
pr-url: https://github.com/nodejs/node/pull/18247
|
pr-url: https://github.com/nodejs/node/pull/18247
|
||||||
description: Instead of throwing the original error it is now wrapped into
|
description: Instead of throwing the original error it is now wrapped into
|
||||||
a AssertionError that contains the full stack trace.
|
a AssertionError that contains the full stack trace.
|
||||||
|
- version: REPLACEME
|
||||||
|
pr-url: https://github.com/nodejs/node/pull/18247
|
||||||
|
description: Value may now only be `undefined` or `null`. Before any truthy
|
||||||
|
input was accepted.
|
||||||
-->
|
-->
|
||||||
* `value` {any}
|
* `value` {any}
|
||||||
|
|
||||||
Throws `value` if `value` is truthy. This is useful when testing the `error`
|
Throws `value` if `value` is not `undefined` or `null`. This is useful when
|
||||||
argument in callbacks.
|
testing the `error` argument in callbacks.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const assert = require('assert').strict;
|
const assert = require('assert').strict;
|
||||||
@ -486,9 +490,7 @@ const assert = require('assert').strict;
|
|||||||
assert.ifError(null);
|
assert.ifError(null);
|
||||||
// OK
|
// OK
|
||||||
assert.ifError(0);
|
assert.ifError(0);
|
||||||
// OK
|
// AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 0
|
||||||
assert.ifError(1);
|
|
||||||
// AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 1
|
|
||||||
assert.ifError('error');
|
assert.ifError('error');
|
||||||
// AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 'error'
|
// AssertionError [ERR_ASSERTION]: ifError got unwanted exception: 'error'
|
||||||
assert.ifError(new Error());
|
assert.ifError(new Error());
|
||||||
|
@ -453,7 +453,7 @@ assert.doesNotThrow = function doesNotThrow(block, error, message) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
assert.ifError = function ifError(err) {
|
assert.ifError = function ifError(err) {
|
||||||
if (err) {
|
if (err !== null && err !== undefined) {
|
||||||
let message = 'ifError got unwanted exception: ';
|
let message = 'ifError got unwanted exception: ';
|
||||||
if (typeof err === 'object' && typeof err.message === 'string') {
|
if (typeof err === 'object' && typeof err.message === 'string') {
|
||||||
if (err.message.length === 0 && err.constructor) {
|
if (err.message.length === 0 && err.constructor) {
|
||||||
|
@ -60,10 +60,16 @@ assert.throws(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
assert.throws(
|
||||||
|
() => { assert.ifError(false); },
|
||||||
|
{
|
||||||
|
message: 'ifError got unwanted exception: false'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
assert.doesNotThrow(() => { assert.ifError(null); });
|
assert.doesNotThrow(() => { assert.ifError(null); });
|
||||||
assert.doesNotThrow(() => { assert.ifError(); });
|
assert.doesNotThrow(() => { assert.ifError(); });
|
||||||
assert.doesNotThrow(() => { assert.ifError(undefined); });
|
assert.doesNotThrow(() => { assert.ifError(undefined); });
|
||||||
assert.doesNotThrow(() => { assert.ifError(false); });
|
|
||||||
|
|
||||||
// https://github.com/nodejs/node-v0.x-archive/issues/2893
|
// https://github.com/nodejs/node-v0.x-archive/issues/2893
|
||||||
{
|
{
|
||||||
|
@ -16,8 +16,8 @@ function test(arg, port = '') {
|
|||||||
let stderr = '';
|
let stderr = '';
|
||||||
proc.stdout.on('data', (data) => stdout += data);
|
proc.stdout.on('data', (data) => stdout += data);
|
||||||
proc.stderr.on('data', (data) => stderr += data);
|
proc.stderr.on('data', (data) => stderr += data);
|
||||||
proc.stdout.on('close', assert.ifError);
|
proc.stdout.on('close', (hadErr) => assert(!hadErr));
|
||||||
proc.stderr.on('close', assert.ifError);
|
proc.stderr.on('close', (hadErr) => assert(!hadErr));
|
||||||
proc.stderr.on('data', () => {
|
proc.stderr.on('data', () => {
|
||||||
if (!stderr.includes('\n')) return;
|
if (!stderr.includes('\n')) return;
|
||||||
assert(/Debugger listening on (.+)/.test(stderr));
|
assert(/Debugger listening on (.+)/.test(stderr));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user