@itrigger/dagre-d3
Version:
A D3-based renderer for Dagre
78 lines (69 loc) • 2.23 kB
JavaScript
// A *very* simple test runner to ensure that the demos work as expected.
var webpage = require("webpage");
var system = require("system");
var stdout = system.stdout;
var stderr = system.stderr;
// Too bad this replaces the more function fs module from nodejs...
var fs = require("fs");
var start = new Date();
var red = "\033[31m";
var green = "\033[32m";
var grey = "\033[30;1m";
var reset = "\033[0m";
function htmlFile(file) { return file.match(/.*\.html/); }
fs.changeWorkingDirectory("./build/dist/demo");
var remaining = {};
ls(".", htmlFile).forEach(function(f) { remaining[f] = true; });
var testCount = Object.keys(remaining).length;
var failures = [];
stdout.write("\n");
stdout.write(grey + " ");
Object.keys(remaining).forEach(function(url) {
stdout.write(".");
var page = webpage.create();
page.onError = function(msg, trace) {
failures.push({ url: url, msg: msg, trace: trace });
testDone(url);
};
page.onLoadFinished = function(status) {
if (status !== "success") {
failures.push({ url: url, msg: "Could not load page" });
}
testDone(url);
};
page.open(url, function() {});
});
function ls(dir, filter) {
var set = [];
fs.list(dir).forEach(function(file) {
if (filter(file)) {
set.push(dir + "/" + file);
}
});
return set;
}
function testDone(url) {
delete remaining[url];
if (!Object.keys(remaining).length) {
stdout.write(reset + "\n");
stdout.write("\n");
failures.forEach(function(failure) {
stderr.write(red + "FAILED: " + failure.url + reset + "\n");
stderr.write(grey);
stderr.write(" " + failure.msg + "\n");
if (failure.trace) {
failure.trace.forEach(function(t) {
stderr.write(" " + t.file + ": " + t.line + (t.function ? " (in function '" + t.function + "')" : "") + "\n");
});
}
stderr.write(reset);
stderr.write("\n");
});
stdout.write(" " + green + (testCount - failures.length) + " passing" + reset);
if (failures.length) {
stdout.write(" " + red + (failures.length) + " failing" + reset);
}
stdout.write(grey + " (" + (new Date() - start) + "ms)" + reset + "\n\n");
phantom.exit(failures.length);
}
}