(function() { var driver, acorn; if (typeof require !== "undefined") { driver = require("./driver.js"); require("./tests.js"); require("./tests-harmony.js"); require("./tests-flow.js"); require("./tests-babel.js"); require("babel/register") acorn = require("../../lib/acorn") } else { driver = window; acorn = window.acorn; } var htmlLog = typeof document === "object" && document.getElementById('log'); var htmlGroup = htmlLog; function group(name) { if (htmlGroup) { var parentGroup = htmlGroup; htmlGroup = document.createElement("ul"); var item = document.createElement("li"); item.textContent = name; item.appendChild(htmlGroup); parentGroup.appendChild(item); } if (typeof console === "object" && console.group) { console.group(name); } } function groupEnd() { if (htmlGroup) { htmlGroup = htmlGroup.parentElement.parentElement; } if (typeof console === "object" && console.groupEnd) { console.groupEnd(name); } } function log(title, message) { if (htmlGroup) { var elem = document.createElement("li"); elem.innerHTML = "" + title + " " + message; htmlGroup.appendChild(elem); } if (typeof console === "object") console.log(title, message); } var stats, modes = { Normal: { config: { parse: acorn.parse } } }; function report(state, code, message) { if (state != "ok") {++stats.failed; log(code, message);} ++stats.testsRun; } group("Errors"); for (var name in modes) { group(name); var mode = modes[name]; stats = mode.stats = {testsRun: 0, failed: 0}; var t0 = +new Date; driver.runTests(mode.config, report); mode.stats.duration = +new Date - t0; groupEnd(); } groupEnd(); function outputStats(name, stats) { log(name + ":", stats.testsRun + " tests run in " + stats.duration + "ms; " + (stats.failed ? stats.failed + " failures." : "all passed.")); } var total = {testsRun: 0, failed: 0, duration: 0}; group("Stats"); for (var name in modes) { var stats = modes[name].stats; outputStats(name + " parser", stats); for (var key in stats) total[key] += stats[key]; } outputStats("Total", total); groupEnd(); if (total.failed && typeof process === "object") { process.stdout.write("", function() { process.exit(1); }); } })();