mirror of https://github.com/n2geoff/testit.git
refactored to support browser and nodejs. also seperated out execution to a run() to allow loading tests from files
This commit is contained in:
parent
5faca9e998
commit
ba94c435ad
105
src/test.it.js
105
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;
|
||||
}));
|
||||
|
|
Loading…
Reference in New Issue