You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.2 KiB

4 years ago
'use strict'
const t = require('tap')
const boot = require('..')
const app = boot()
t.plan(2)
var listenersError
var listenersRejections
function noUnhandledRejection (e) {
t.fail('unhandledRejection should never be called')
}
function handleUncaughtException (e) {
t.pass('uncaughtException seen')
}
process.nextTick(() => {
listenersError = process.listeners('uncaughtException')
listenersRejections = process.listeners('uncaughtException')
process.removeAllListeners('uncaughtException')
process.removeAllListeners('unhandledRejection')
process.once('unhandledRejection', noUnhandledRejection)
process.once('uncaughtException', handleUncaughtException)
})
t.tearDown(function () {
process.removeListener('unhandledRejection', noUnhandledRejection)
process.removeListener('uncaughtException', handleUncaughtException)
listenersError.forEach((l) => process.on('uncaughtException', l))
listenersRejections.forEach((l) => process.on('unhandledRejection', l))
})
app.use(function (f, opts) {
return Promise.reject(new Error('kaboom'))
}).after(function (err) {
t.equal(err.message, 'kaboom')
throw new Error('kaboom2')
})
app.ready(function () {
t.fail('the ready callback should never be called')
})