teenytest
Version:
A teeny tiny test runner
50 lines (44 loc) • 1.28 kB
JavaScript
const resultsStore = require('../lib/run/results-store')
module.exports = function () {
return {
name: 'teenytest-results',
analyzers: {
userFunction: function (runUserFunction, metadata, cb) {
if (!shouldBeRun(resultsStore, metadata)) return cb(null)
runUserFunction(function (er) {
if (er) {
resultsStore.markFailure(metadata, er)
}
cb(null)
})
},
test: buildResultsForTestOrSuiteScoping,
suite: buildResultsForTestOrSuiteScoping
}
}
}
function buildResultsForTestOrSuiteScoping (runTestOrSuite, metadata, cb) {
resultsStore.nest(metadata)
if (resultsStore.currentTestSetUpFailed()) {
resultsStore.failTest(metadata)
resultsStore.skipTest(metadata)
resultsStore.unNest()
cb(null)
} else {
runTestOrSuite(function (er) {
if (er) {
resultsStore.markFailure(metadata, er)
}
resultsStore.unNest()
cb(null)
})
}
}
function shouldBeRun (resultsStore, metadata) {
return !resultsStore.currentTestHasFailed() ||
(
metadata.hookType === 'afterEach' &&
resultsStore.afterEachCleanupNecessary(metadata.distanceFromTest)
) ||
metadata.hookType === 'afterAll'
}