Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/tests/resources/testharness.js b/tests/resources/testharness.js
- --- a/tests/resources/testharness.js
- +++ b/tests/resources/testharness.js
- @@ -1323,58 +1323,76 @@ policies and contribution forms [3].
- }
- i++;
- }
- return rv;
- }];
- log.appendChild(render(summary_template, {num_tests:tests.length}, output_document));
- + function hide_result_class(result_class)
- + {
- + var style_element = output_document.createElementNS(xhtml_ns, "style");
- + style_element.id = "hide-" + result_class;
- + style_element.innerHTML = "table#results > tbody > tr."+result_class+"{display:none}";
- + output_document.body.appendChild(style_element);
- + }
- +
- forEach(output_document.querySelectorAll("section#summary label"),
- function(element)
- {
- on_event(element, "click",
- function(e)
- {
- if (output_document.getElementById("results") === null)
- {
- e.preventDefault();
- return;
- }
- var result_class = element.parentNode.getAttribute("class");
- var style_element = output_document.querySelector("style#hide-" + result_class);
- var input_element = element.querySelector("input");
- if (!style_element && !input_element.checked) {
- - style_element = output_document.createElementNS(xhtml_ns, "style");
- - style_element.id = "hide-" + result_class;
- - style_element.innerHTML = "table#results > tbody > tr."+result_class+"{display:none}";
- - output_document.body.appendChild(style_element);
- + hide_result_class(result_class);
- } else if (style_element && input_element.checked) {
- style_element.parentNode.removeChild(style_element);
- }
- });
- });
- + if (tests.length > 1000) {
- + // Hide all the results by default so that it renders more quickly
- + forEach(output_document.querySelectorAll("section#summary label"),
- + function(element)
- + {
- + element.querySelector("input").checked = false;
- + hide_result_class(element.parentNode.className);
- + });
- + }
- +
- + // This use of innerHTML plus manual escaping is not recommended in
- + // general, but is necessary here for performance. Using textContent
- + // on each individual <td> adds tens of seconds of execution time for
- + // large test suites (tens of thousands of tests).
- log.appendChild(document.createElement("section"));
- var html = "<h2>Details</h2><table id=results>"
- + "<thead><tr><th>Result</th><th>Test Name</th><th>Message</th></tr></thead>"
- + "<tbody>";
- for (var i = 0; i < tests.length; i++) {
- - html += "<tr><td></td><td></td><td></td></tr>";
- + html += '<tr class="'
- + + status_class(status_text[tests[i].status])
- + + '"><td>'
- + + status_text[tests[i].status]
- + + "</td><td>"
- + + tests[i].name.replace(/\&/g, "&").replace(/</g, "<")
- + + "</td><td>"
- + + (tests[i].message ? tests[i].message.replace(/\&/g, "&").replace(/</g, "<") : " ")
- + + "</td></tr>";
- }
- log.lastChild.innerHTML = html + "</tbody></table>";
- - var tbody = log.querySelector("tbody");
- - for (var i = 0; i < tests.length; i++)
- - {
- - var tr = tbody.childNodes[i];
- - tr.className = status_class(status_text[tests[i].status]);
- - tr.childNodes[0].textContent = status_text[tests[i].status];
- - tr.childNodes[1].textContent = tests[i].name;
- - tr.childNodes[2].textContent = tests[i].message ? tests[i].message : " ";
- - }
- };
- var output = new Output();
- add_start_callback(function (properties) {output.setup(properties);});
- add_result_callback(function (test) {output.show_status(tests);});
- add_completion_callback(function (tests, harness_status) {output.show_results(tests, harness_status);});
- /*
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement