overleaf/libraries/o-error/test/support/index.js

32 lines
966 B
JavaScript
Raw Normal View History

2018-03-07 11:42:39 -05:00
'use strict'
var chai = require('chai')
global.expect = chai.expect
2019-07-08 06:52:42 -04:00
exports.expectError = function OErrorExpectError (e, expected) {
// should set the name to the error's name
expect(e.name).to.equal(expected.name)
// should be an instance of the error type
expect(e instanceof expected.klass).to.be.true
// should be an instance of the built-in Error type
expect(e instanceof Error).to.be.true
// should be recognised by util.isError
expect(require('util').isError(e)).to.be.true
// should have a stack trace
expect(e.stack).to.be.truthy
// toString should return the default error message formatting
expect(e.toString()).to.equal(expected.message)
// stack should start with the default error message formatting
2020-01-27 05:45:31 -05:00
expect(e.stack.split('\n')[0]).to.match(new RegExp(`^${expected.name}:`))
// first stack frame should be the function where the error was thrown
expect(e.stack.split('\n')[1]).to.match(expected.firstFrameRx)
}