Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; var ARGUMENT_NAMES = /([^\s,]+)/g; function getParamNames(func) { var fnStr = func.toString().replace(STRIP_COMMENTS, ''); var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES); if (result === null) result = []; return result; } function wrap(obj) { let data = []; out = (...args) => { return out.ok.apply(out, args); }; Object.keys(obj).map(k => { let old = obj[k]; if (typeof old === "function") { let functionParams = getParamNames(old) out[k] = function(...args) { let params = k == "fail" && args.length == 1 ? ["message"] : functionParams; let log = { passes: false, method: k }; args.map((v, i) => { log[params[i] || i] = v; }) try { let result = old.apply(obj, args); log.passes = true; data.push(log) return result; } catch (e) { data.push(log); throw e; } } } else { out[k] = old; } }); out.get = () => data; out.print = () => { console.log(JSON.stringify(data, null, 2)); }; out.clear = () => { data = []; return obj; }; return out; } module.exports = wrap(require("assert")) |