pegjs/test/run
David Majda fb5028eb90 Use |util| module instead of |sys|
|sys| emits a warning in Node.js 0.6.x.
2012-01-07 12:01:11 +01:00

87 lines
2.1 KiB
JavaScript
Executable file

#!/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();