diff --git a/src/test.it.js b/src/test.it.js index 797a126..f3d29e9 100644 --- a/src/test.it.js +++ b/src/test.it.js @@ -1,46 +1,65 @@ -'use strict'; +/* Test.it v 0.5 | MIT | https://github.com/n2geoff/testit */ +(function(root, factory) { + // support browser & commonjs + if(typeof module === "object" && module.exports) { + module.exports = factory(root.test); + } else { + root.test = factory(root.test); + } +}(this, function() { + 'use strict'; -const test = { - it: function(tests, next) { - // capture results - let failed = []; - let passed = []; - - // loop through tests - Object.keys(tests).forEach(function(name) { - let test = tests[name]; - - // execute - try { - test(); - passed.push(`\n+ ${name}`); - } catch (err) { - // TODO: include error stack option - // let back = err.stack.split('\n')[2]; - // let re = /(?<=\()(.*?)(?=\))/g; - // let trace = re.exec(back)[0]; - failed.push(`\n- ${name}`); - console.error(err); - // failed.push(`\n- ${name} - - ${trace}`); - } - }); - - // summary - if(typeof next === 'function') { - return next({ - pass: passed, - fail: failed + const test = { + _tests: {}, + run: function(next) { + + let tests = this._tests; + // capture results + let failed = []; + let passed = []; + + // loop through tests + Object.keys(tests).forEach(function(name) { + let test = tests[name]; + + // execute + try { + test(); + passed.push(`\n+ ${name}`); + } catch (err) { + // TODO: include error stack option + // let back = err.stack.split('\n')[2]; + // let re = /(?<=\()(.*?)(?=\))/g; + // let trace = re.exec(back)[0]; + failed.push(`\n- ${name}`); + console.error(err); + // failed.push(`\n- ${name} - - ${trace}`); + } }); - } else { - console.log(...passed, ...failed); - console.log(`\n# tests ${failed.length + passed.length} pass ${passed.length} fail ${failed.length}`); + + // summary + if(typeof next === 'function') { + return next({ + pass: passed, + fail: failed + }); + } else { + console.log(...passed, ...failed); + console.log(`\n# tests ${failed.length + passed.length} pass ${passed.length} fail ${failed.length}`); + + return failed.length ? false : true; + } + }, + it: function(tests) { + this._tests = tests; + return this; + }, + assert: function (e, a) { if (e != a) throw Error(`expected ${e} == ${a}`); }, + equals: function (e, a) { if (e !== a) throw Error(`expected ${e} === ${a}`); }, + exists: function (v) { if (!v) throw Error(`exists value ${v}`); }, + pass: function () { return true; }, + fail: function (m) { throw Error(m); } + } - return failed.length ? false : true; - } - }, - assert: function (e, a) { if (e != a) throw Error(`expected ${e} == ${a}`); }, - equals: function (e, a) { if (e !== a) throw Error(`expected ${e} === ${a}`); }, - exists: function (v) { if (!v) throw Error(`exists value ${v}`); }, - pass: function () { return true; }, - fail: function (m) { throw Error(m); } -} + return test; +}));