UNPKG

basictap

Version:
75 lines (53 loc) 1.65 kB
import EventEmitter from 'events'; import createTestSuite from 'just-tap'; const { test, run, context } = createTestSuite(); const events = new EventEmitter(); let triggered = false; function validateTest (name, job) { if (!name) { throw new Error('basictap: test was not given a name'); } if (context.tests[name]) { throw new Error('basictap: test already exists with name "' + name + '"'); } if (!job) { throw new Error(`basictap: test "${name}" was not given a function to run`); } } function createTest (name, job) { validateTest(name, job); test(name, job); } createTest.skip = function (name, job) { validateTest(name, job); test.skip(name, job); }; createTest.todo = function (name, job) { if (job) { throw new Error(`basictap: test "${name}" had a job, but was set as todo. Did you mean to skip?`); } test.todo(name, job); }; createTest.only = function (name, job) { validateTest(name, job); test.only(name, job); }; createTest.maximumConcurrentTests = 1; createTest.trigger = async function triggerTests () { if (triggered) { return; } triggered = true; const results = await run({ concurrency: createTest.maximumConcurrentTests }); if (!results.success) { process.exit(1); } events.emit('finish', results); }; createTest.on = events.addListener.bind(events); createTest.off = events.removeListener.bind(events); createTest.addListener = events.addListener.bind(events); createTest.removeListener = events.removeListener.bind(events); process.on('beforeExit', createTest.trigger); createTest.maximumConcurrentTests = 1; export default createTest;