108 lines
2.5 KiB
JavaScript
108 lines
2.5 KiB
JavaScript
"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 = "<b>" + title + "</b> " + 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);
|
|
});
|
|
}
|
|
})(); |