console: fixup console.dir() error handling

Apply the `console: do not emit error events` changes properly
to `console.dir()`.

This was overlooked in f18e08d820dde161788d95a5603546ceca021e90
(https://github.com/nodejs/node/pull/9744).

Ref: f18e08d820 (commitcomment-20934407)
PR-URL: https://github.com/nodejs/node/pull/11443
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Anna Henningsen 2017-02-17 18:15:09 +01:00
parent 193468667b
commit c969047d62
No known key found for this signature in database
GPG Key ID: D8B9F5AEAE84E4CF
3 changed files with 55 additions and 48 deletions

View File

@ -103,7 +103,10 @@ Console.prototype.error = Console.prototype.warn;
Console.prototype.dir = function dir(object, options) { Console.prototype.dir = function dir(object, options) {
options = Object.assign({customInspect: false}, options); options = Object.assign({customInspect: false}, options);
write(this._ignoreErrors, this._stdout, `${util.inspect(object, options)}\n`); write(this._ignoreErrors,
this._stdout,
`${util.inspect(object, options)}\n`,
this._stdoutErrorHandler);
}; };

View File

@ -4,14 +4,16 @@ const { Console } = require('console');
const { Writable } = require('stream'); const { Writable } = require('stream');
const assert = require('assert'); const assert = require('assert');
const out = new Writable({ for (const method of ['dir', 'log', 'warn']) {
write: common.mustCall((chunk, enc, callback) => { const out = new Writable({
process.nextTick(callback, new Error('foobar')); write: common.mustCall((chunk, enc, callback) => {
}) process.nextTick(callback, new Error('foobar'));
}); })
});
const c = new Console(out, out, true); const c = new Console(out, out, true);
assert.doesNotThrow(() => { assert.doesNotThrow(() => {
c.log('abc'); c[method]('abc');
}); });
}

View File

@ -4,44 +4,46 @@ const { Console } = require('console');
const { Writable } = require('stream'); const { Writable } = require('stream');
const assert = require('assert'); const assert = require('assert');
{ for (const method of ['dir', 'log', 'warn']) {
const out = new Writable({ {
write: common.mustCall((chunk, enc, callback) => { const out = new Writable({
callback(new Error('foobar')); write: common.mustCall((chunk, enc, callback) => {
}) callback(new Error('foobar'));
}); })
});
const c = new Console(out, out, true); const c = new Console(out, out, true);
assert.doesNotThrow(() => { assert.doesNotThrow(() => {
c.log('abc'); c[method]('abc');
}); });
} }
{ {
const out = new Writable({ const out = new Writable({
write: common.mustCall((chunk, enc, callback) => { write: common.mustCall((chunk, enc, callback) => {
throw new Error('foobar'); throw new Error('foobar');
}) })
}); });
const c = new Console(out, out, true); const c = new Console(out, out, true);
assert.doesNotThrow(() => { assert.doesNotThrow(() => {
c.log('abc'); c[method]('abc');
}); });
} }
{ {
const out = new Writable({ const out = new Writable({
write: common.mustCall((chunk, enc, callback) => { write: common.mustCall((chunk, enc, callback) => {
setImmediate(() => callback(new Error('foobar'))); setImmediate(() => callback(new Error('foobar')));
}) })
}); });
const c = new Console(out, out, true); const c = new Console(out, out, true);
assert.doesNotThrow(() => { assert.doesNotThrow(() => {
c.log('abc'); c[method]('abc');
}); });
}
} }