improve inbrowser test runner

This commit is contained in:
nightwing 2012-03-14 14:55:56 +04:00
commit 020cf5f39a

View file

@ -9,96 +9,114 @@ var passed = 0
var failed = 0 var failed = 0
var log = document.getElementById("log") var log = document.getElementById("log")
var tests = [ var testNames = [
require("ace/anchor_test"), "ace/anchor_test",
require("ace/commands/command_manager_test"), "ace/commands/command_manager_test",
require("ace/document_test"), "ace/document_test",
require("ace/edit_session_test"), "ace/edit_session_test",
require("ace/editor_change_document_test"), "ace/editor_change_document_test",
require("ace/editor_highlight_selected_word_test"), "ace/editor_highlight_selected_word_test",
require("ace/editor_navigation_test"), "ace/editor_navigation_test",
require("ace/editor_text_edit_test"), "ace/editor_text_edit_test",
require("ace/ext/static_highlight_test"), "ace/ext/static_highlight_test",
require("ace/layer/text_test"), "ace/layer/text_test",
require("ace/lib/event_emitter_test"), "ace/lib/event_emitter_test",
require("ace/mode/coffee/parser_test"), "ace/mode/coffee/parser_test",
require("ace/mode/coffee_tokenizer_test"), "ace/mode/coffee_tokenizer_test",
require("ace/mode/coldfusion_test"), "ace/mode/coldfusion_test",
require("ace/mode/css_test"), "ace/mode/css_test",
require("ace/mode/css_tokenizer_test"), "ace/mode/css_tokenizer_test",
require("ace/mode/css_worker"), "ace/mode/css_worker",
require("ace/mode/html_test"), "ace/mode/html_test",
require("ace/mode/html_tokenizer_test"), "ace/mode/html_tokenizer_test",
require("ace/mode/javascript_test"), "ace/mode/javascript_test",
require("ace/mode/javascript_tokenizer_test"), "ace/mode/javascript_tokenizer_test",
require("ace/mode/javascript_worker_test"), "ace/mode/javascript_worker_test",
require("ace/mode/python_test"), "ace/mode/python_test",
require("ace/mode/ruby_tokenizer_test"), "ace/mode/ruby_tokenizer_test",
require("ace/mode/text_test"), "ace/mode/text_test",
require("ace/mode/xml_test"), "ace/mode/xml_test",
require("ace/mode/xml_tokenizer_test"), "ace/mode/xml_tokenizer_test",
require("ace/mode/folding/cstyle_test"), "ace/mode/folding/cstyle_test",
require("ace/mode/folding/html_test"), "ace/mode/folding/html_test",
require("ace/mode/folding/pythonic_test"), "ace/mode/folding/pythonic_test",
require("ace/mode/folding/xml_test"), "ace/mode/folding/xml_test",
require("ace/range_test"), "ace/range_test",
require("ace/search_test"), "ace/search_test",
require("ace/selection_test"), "ace/selection_test",
require("ace/token_iterator_test"), "ace/token_iterator_test",
require("ace/virtual_renderer_test") "ace/virtual_renderer_test"
] ];
async.list(tests) var html = ["<a href='?'>all tests</a><br>"];
.expand(function(test) { for (var i in testNames) {
return AsyncTest.testcase(test) var href = testNames[i];
}, AsyncTest.TestGenerator) html.push("<a href='?", href, "'>", href.replace(/^ace\//, "") ,"</a><br>");
.run() }
.each(function(test, next) {
var node = document.createElement("div");
node.className = test.passed ? "passed" : "failed";
var name = test.name var nav = document.createElement("div");
if (test.suiteName) nav.innerHTML = html.join("");
name = test.suiteName + ": " + test.name nav.style.cssText = "position:absolute;right:0;top:0";
document.body.appendChild(nav);
var msg = "[" + test.count + "/" + test.index + "] " + name + " " + (test.passed ? "OK" : "FAIL") if (location.search)
if (!test.passed) { testNames = location.search.substr(1).split(",")
if (test.err.stack)
var err = test.err.stack require(testNames, function() {
var tests = testNames.map(require);
async.list(tests)
.expand(function(test) {
return AsyncTest.testcase(test)
}, AsyncTest.TestGenerator)
.run()
.each(function(test, next) {
var node = document.createElement("div");
node.className = test.passed ? "passed" : "failed";
var name = test.name
if (test.suiteName)
name = test.suiteName + ": " + test.name
var msg = "[" + test.count + "/" + test.index + "] " + name + " " + (test.passed ? "OK" : "FAIL")
if (!test.passed) {
if (test.err.stack)
var err = test.err.stack
else
var err = test.err
console.error(msg);
console.error(err);
msg += "<pre class='error'>" + err + "</pre>";
} else {
console.log(msg);
}
node.innerHTML = msg;
log.appendChild(node);
next()
})
.each(function(test) {
if (test.passed)
passed += 1
else else
var err = test.err failed += 1
})
console.error(msg); .end(function() {
console.error(err); log.innerHTML += [
msg += "<pre class='error'>" + err + "</pre>"; "<div class='summary'>",
} else { "<br>",
console.log(msg); "Summary: <br>",
} "<br>",
"Total number of tests: " + (passed + failed) + "<br>",
node.innerHTML = msg; (passed ? "Passed tests: " + passed + "<br>" : ""),
log.appendChild(node); (failed ? "Failed tests: " + failed + "<br>" : "")
].join("")
next() console.log("Total number of tests: " + (passed + failed));
}) console.log("Passed tests: " + passed);
.each(function(test) { console.log("Failed tests: " + failed);
if (test.passed) })
passed += 1 });
else
failed += 1
})
.end(function() {
log.innerHTML += [
"<div class='summary'>",
"<br>",
"Summary: <br>",
"<br>",
"Total number of tests: " + (passed + failed) + "<br>",
(passed ? "Passed tests: " + passed + "<br>" : ""),
(failed ? "Failed tests: " + failed + "<br>" : "")
].join("")
console.log("Total number of tests: " + (passed + failed));
console.log("Passed tests: " + passed);
console.log("Failed tests: " + failed);
})
}); });