43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
var stylize = require('../vows/console').stylize;
|
|
var inspect = require('../vows/console').inspect;
|
|
|
|
require('assert').AssertionError.prototype.toString = function () {
|
|
var that = this,
|
|
source;
|
|
|
|
if (this.stack) {
|
|
source = this.stack.match(/([a-zA-Z0-9._-]+\.(?:js|coffee))(:\d+):\d+/);
|
|
}
|
|
|
|
function parse(str) {
|
|
var actual = inspect(that.actual, {showHidden: that.actual instanceof Error}),
|
|
expected;
|
|
|
|
if (that.expected instanceof Function) {
|
|
expected = that.expected.name;
|
|
}
|
|
else {
|
|
expected = inspect(that.expected, {showHidden: that.actual instanceof Error});
|
|
}
|
|
|
|
return str.replace(/{actual}/g, actual).
|
|
replace(/{operator}/g, stylize(that.operator, 'bold')).
|
|
replace(/{expected}/g, expected);
|
|
}
|
|
|
|
if (this.message) {
|
|
var msg = stylize(parse(this.message), 'yellow');
|
|
if (source) {
|
|
msg += stylize(' // ' + source[1] + source[2], 'grey');
|
|
}
|
|
return msg;
|
|
} else {
|
|
return stylize([
|
|
this.expected,
|
|
this.operator,
|
|
this.actual
|
|
].join(' '), 'yellow');
|
|
}
|
|
};
|
|
|