diff --git a/lib/ace/test/all_browser.js b/lib/ace/test/all_browser.js
index 90eab310..1553f379 100644
--- a/lib/ace/test/all_browser.js
+++ b/lib/ace/test/all_browser.js
@@ -9,96 +9,114 @@ var passed = 0
var failed = 0
var log = document.getElementById("log")
-var tests = [
- require("ace/anchor_test"),
- require("ace/commands/command_manager_test"),
- require("ace/document_test"),
- require("ace/edit_session_test"),
- require("ace/editor_change_document_test"),
- require("ace/editor_highlight_selected_word_test"),
- require("ace/editor_navigation_test"),
- require("ace/editor_text_edit_test"),
- require("ace/ext/static_highlight_test"),
- require("ace/layer/text_test"),
- require("ace/lib/event_emitter_test"),
- require("ace/mode/coffee/parser_test"),
- require("ace/mode/coffee_tokenizer_test"),
- require("ace/mode/coldfusion_test"),
- require("ace/mode/css_test"),
- require("ace/mode/css_tokenizer_test"),
- require("ace/mode/css_worker"),
- require("ace/mode/html_test"),
- require("ace/mode/html_tokenizer_test"),
- require("ace/mode/javascript_test"),
- require("ace/mode/javascript_tokenizer_test"),
- require("ace/mode/javascript_worker_test"),
- require("ace/mode/python_test"),
- require("ace/mode/ruby_tokenizer_test"),
- require("ace/mode/text_test"),
- require("ace/mode/xml_test"),
- require("ace/mode/xml_tokenizer_test"),
- require("ace/mode/folding/cstyle_test"),
- require("ace/mode/folding/html_test"),
- require("ace/mode/folding/pythonic_test"),
- require("ace/mode/folding/xml_test"),
- require("ace/range_test"),
- require("ace/search_test"),
- require("ace/selection_test"),
- require("ace/token_iterator_test"),
- require("ace/virtual_renderer_test")
-]
+var testNames = [
+ "ace/anchor_test",
+ "ace/commands/command_manager_test",
+ "ace/document_test",
+ "ace/edit_session_test",
+ "ace/editor_change_document_test",
+ "ace/editor_highlight_selected_word_test",
+ "ace/editor_navigation_test",
+ "ace/editor_text_edit_test",
+ "ace/ext/static_highlight_test",
+ "ace/layer/text_test",
+ "ace/lib/event_emitter_test",
+ "ace/mode/coffee/parser_test",
+ "ace/mode/coffee_tokenizer_test",
+ "ace/mode/coldfusion_test",
+ "ace/mode/css_test",
+ "ace/mode/css_tokenizer_test",
+ "ace/mode/css_worker",
+ "ace/mode/html_test",
+ "ace/mode/html_tokenizer_test",
+ "ace/mode/javascript_test",
+ "ace/mode/javascript_tokenizer_test",
+ "ace/mode/javascript_worker_test",
+ "ace/mode/python_test",
+ "ace/mode/ruby_tokenizer_test",
+ "ace/mode/text_test",
+ "ace/mode/xml_test",
+ "ace/mode/xml_tokenizer_test",
+ "ace/mode/folding/cstyle_test",
+ "ace/mode/folding/html_test",
+ "ace/mode/folding/pythonic_test",
+ "ace/mode/folding/xml_test",
+ "ace/range_test",
+ "ace/search_test",
+ "ace/selection_test",
+ "ace/token_iterator_test",
+ "ace/virtual_renderer_test"
+];
-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 html = ["all tests
"];
+for (var i in testNames) {
+ var href = testNames[i];
+ html.push("", href.replace(/^ace\//, "") ,"
");
+}
- var name = test.name
- if (test.suiteName)
- name = test.suiteName + ": " + test.name
+var nav = document.createElement("div");
+nav.innerHTML = html.join("");
+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 (!test.passed) {
- if (test.err.stack)
- var err = test.err.stack
+if (location.search)
+ testNames = location.search.substr(1).split(",")
+
+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 += "
" + err + ""; + } else { + console.log(msg); + } + + node.innerHTML = msg; + log.appendChild(node); + + next() + }) + .each(function(test) { + if (test.passed) + passed += 1 else - var err = test.err - - console.error(msg); - console.error(err); - msg += "
" + err + ""; - } else { - console.log(msg); - } - - node.innerHTML = msg; - log.appendChild(node); - - next() - }) - .each(function(test) { - if (test.passed) - passed += 1 - else - failed += 1 - }) - .end(function() { - log.innerHTML += [ - "