"use strict"; (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-jsx.js"); require("./tests-babel.js"); require("babel/register"); acorn = require("../src"); } 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); }); } })();