var test = require('tape'); var ErrorWithCause = require('error-cause/Error'); var inspect = require('../'); test('type error', function (t) { t.plan(1); var aerr = new TypeError(); aerr.foo = 555; aerr.bar = [1, 2, 3]; var berr = new TypeError('tuv'); berr.baz = 555; var cerr = new SyntaxError(); cerr.message = 'whoa'; cerr['a-b'] = 5; var withCause = new ErrorWithCause('foo', { cause: 'bar' }); var withCausePlus = new ErrorWithCause('foo', { cause: 'bar' }); withCausePlus.foo = 'bar'; var withUndefinedCause = new ErrorWithCause('foo', { cause: undefined }); var withEnumerableCause = new Error('foo'); withEnumerableCause.cause = 'bar'; var obj = [ new TypeError(), new TypeError('xxx'), aerr, berr, cerr, withCause, withCausePlus, withUndefinedCause, withEnumerableCause ]; t.equal(inspect(obj), '[ ' + [ '[TypeError]', '[TypeError: xxx]', '{ [TypeError] foo: 555, bar: [ 1, 2, 3 ] }', '{ [TypeError: tuv] baz: 555 }', '{ [SyntaxError: whoa] message: \'whoa\', \'a-b\': 5 }', 'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: \'bar\' }', '{ [Error: foo] ' + ('cause' in Error.prototype ? '' : '[cause]: \'bar\', ') + 'foo: \'bar\' }', 'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: undefined }', '{ [Error: foo] cause: \'bar\' }' ].join(', ') + ' ]'); });