parent
df480e0357
commit
389e2a07e6
28
lib/util.js
28
lib/util.js
@ -185,6 +185,9 @@ function formatValue(ctx, value, recurseTimes) {
|
|||||||
if (isDate(value)) {
|
if (isDate(value)) {
|
||||||
return ctx.stylize(value.toUTCString(), 'date');
|
return ctx.stylize(value.toUTCString(), 'date');
|
||||||
}
|
}
|
||||||
|
if (isError(value)) {
|
||||||
|
return formatError(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var base = '', array = false, braces = ['{', '}'];
|
var base = '', array = false, braces = ['{', '}'];
|
||||||
@ -211,6 +214,11 @@ function formatValue(ctx, value, recurseTimes) {
|
|||||||
base = ' ' + value.toUTCString();
|
base = ' ' + value.toUTCString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make error with message first say the error
|
||||||
|
if (isError(value)) {
|
||||||
|
base = ' ' + formatError(value);
|
||||||
|
}
|
||||||
|
|
||||||
if (keys.length === 0 && (!array || value.length == 0)) {
|
if (keys.length === 0 && (!array || value.length == 0)) {
|
||||||
return braces[0] + base + braces[1];
|
return braces[0] + base + braces[1];
|
||||||
}
|
}
|
||||||
@ -264,6 +272,11 @@ function formatPrimitive(ctx, value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function formatError(value) {
|
||||||
|
return '[' + Error.prototype.toString.call(value) + ']';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
|
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
|
||||||
var output = [];
|
var output = [];
|
||||||
for (var i = 0, l = value.length; i < l; ++i) {
|
for (var i = 0, l = value.length; i < l; ++i) {
|
||||||
@ -374,13 +387,24 @@ function isArray(ar) {
|
|||||||
|
|
||||||
function isRegExp(re) {
|
function isRegExp(re) {
|
||||||
return re instanceof RegExp ||
|
return re instanceof RegExp ||
|
||||||
(typeof re === 'object' && Object.prototype.toString.call(re) === '[object RegExp]');
|
(typeof re === 'object' && objectToString(re) === '[object RegExp]');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function isDate(d) {
|
function isDate(d) {
|
||||||
return d instanceof Date ||
|
return d instanceof Date ||
|
||||||
(typeof d === 'object' && Object.prototype.toString.call(d) === '[object Date]');
|
(typeof d === 'object' && objectToString(d) === '[object Date]');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function isError(e) {
|
||||||
|
return e instanceof Error ||
|
||||||
|
(typeof e === 'object' && objectToString(e) === '[object Error]');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function objectToString(o) {
|
||||||
|
return Object.prototype.toString.call(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,3 +41,21 @@ delete a[1];
|
|||||||
assert.equal(util.inspect(a), "[ 'foo', , 'baz' ]");
|
assert.equal(util.inspect(a), "[ 'foo', , 'baz' ]");
|
||||||
assert.equal(util.inspect(a, true), "[ 'foo', , 'baz', [length]: 3 ]");
|
assert.equal(util.inspect(a, true), "[ 'foo', , 'baz', [length]: 3 ]");
|
||||||
assert.equal(util.inspect(new Array(5)), '[ , , , , ]');
|
assert.equal(util.inspect(new Array(5)), '[ , , , , ]');
|
||||||
|
|
||||||
|
// exceptions should print the error message, not "{}"
|
||||||
|
assert.equal(util.inspect(new Error()), '[Error]');
|
||||||
|
assert.equal(util.inspect(new Error('FAIL')), '[Error: FAIL]');
|
||||||
|
assert.equal(util.inspect(new TypeError('FAIL')), '[TypeError: FAIL]');
|
||||||
|
assert.equal(util.inspect(new SyntaxError('FAIL')), '[SyntaxError: FAIL]');
|
||||||
|
try {
|
||||||
|
undef();
|
||||||
|
} catch (e) {
|
||||||
|
assert.equal(util.inspect(e), '[ReferenceError: undef is not defined]');
|
||||||
|
}
|
||||||
|
var ex = util.inspect(new Error('FAIL'), true);
|
||||||
|
console.log(ex);
|
||||||
|
assert.ok(ex.indexOf("[Error: FAIL]") != -1);
|
||||||
|
assert.ok(ex.indexOf("[stack]") != -1);
|
||||||
|
assert.ok(ex.indexOf("[message]") != -1);
|
||||||
|
assert.ok(ex.indexOf("[arguments]") != -1);
|
||||||
|
assert.ok(ex.indexOf("[type]") != -1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user