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