You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.1 KiB
JavaScript

#!/usr/bin/env node
var util = require("util");
var fs = require("fs");
var PEG = require("../lib/peg");
var QUnit = require("./vendor/qunit/qunit").QUnit;
function bold(s) { return "\u001B[1m" + s + "\u001B[22m"; };
function message(s) { return "\u001B[35m" + s + "\u001B[39m"; };
function ok(s) { return "\u001B[32m" + s + "\u001B[39m"; };
function error(s) { return "\u001B[31m" + s + "\u001B[39m"; };
function indent(s) {
return s.split("\n").map(function(line) { return " " + line; }).join("\n");
}
QUnit.init();
QUnit.config.blocking = true;
QUnit.config.updateRate = 0;
QUnit.moduleStart = function(details) {
util.puts("");
util.puts(bold(details.name));
};
var failedAssertions = [];
QUnit.testStart = function(details) {
failedAssertions = [];
};
QUnit.testDone = function(details) {
if (details.failed == 0) {
util.puts('✔ ' + details.name);
} else {
util.puts(error('✖ ' + details.name));
util.puts("");
failedAssertions.forEach(function(assertion) {
util.puts(assertion);
});
}
};
QUnit.log = function(details) {
if (details.result) { return; }
var output = ""
if (details.message) {
output += indent("Message: " + message(details.message)) + "\n";
}
if (details.actual && details.expected) {
output += indent("Expected: " + QUnit.jsDump.parse(details.expected)) + "\n";
if (details.actual != details.expected) {
output += indent("Actual: " + QUnit.jsDump.parse(details.actual));
}
}
failedAssertions.push(output);
};
QUnit.done = function(details) {
util.puts("");
if (details.failed > 0) {
util.puts(bold(error("FAILURES: "))
+ details.failed + "/"
+ details.total + " assertions failed ("
+ details.runtime + " ms)"
);
} else {
util.puts(bold(ok('OK: '))
+ details.total + " assertions ("
+ details.runtime + " ms)"
)
}
};
[
"helpers.js",
"parser-test.js",
"passes-test.js",
"compiler-test.js",
].forEach(function(file) {
eval("with (QUnit) {" + fs.readFileSync(__dirname + "/" + file, "utf8") + "}");
});
QUnit.start();