Advertisement
Guest User

Untitled

a guest
Oct 7th, 2011
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 4.89 KB | None | 0 0
  1. diff --git a/tests/resources/testharness.js b/tests/resources/testharness.js
  2. --- a/tests/resources/testharness.js
  3. +++ b/tests/resources/testharness.js
  4. @@ -1323,58 +1323,76 @@ policies and contribution forms [3].
  5.                                          }
  6.                                          i++;
  7.                                      }
  8.                                      return rv;
  9.                                  }];
  10.  
  11.          log.appendChild(render(summary_template, {num_tests:tests.length}, output_document));
  12.  
  13. +        function hide_result_class(result_class)
  14. +        {
  15. +            var style_element = output_document.createElementNS(xhtml_ns, "style");
  16. +            style_element.id = "hide-" + result_class;
  17. +            style_element.innerHTML = "table#results > tbody > tr."+result_class+"{display:none}";
  18. +            output_document.body.appendChild(style_element);
  19. +        }
  20. +
  21.          forEach(output_document.querySelectorAll("section#summary label"),
  22.                  function(element)
  23.                  {
  24.                      on_event(element, "click",
  25.                               function(e)
  26.                               {
  27.                                   if (output_document.getElementById("results") === null)
  28.                                   {
  29.                                       e.preventDefault();
  30.                                       return;
  31.                                   }
  32.                                   var result_class = element.parentNode.getAttribute("class");
  33.                                   var style_element = output_document.querySelector("style#hide-" + result_class);
  34.                                   var input_element = element.querySelector("input");
  35.                                   if (!style_element && !input_element.checked) {
  36. -                                     style_element = output_document.createElementNS(xhtml_ns, "style");
  37. -                                     style_element.id = "hide-" + result_class;
  38. -                                     style_element.innerHTML = "table#results > tbody > tr."+result_class+"{display:none}";
  39. -                                     output_document.body.appendChild(style_element);
  40. +                                     hide_result_class(result_class);
  41.                                   } else if (style_element && input_element.checked) {
  42.                                       style_element.parentNode.removeChild(style_element);
  43.                                   }
  44.                               });
  45.                  });
  46.  
  47. +        if (tests.length > 1000) {
  48. +            // Hide all the results by default so that it renders more quickly
  49. +            forEach(output_document.querySelectorAll("section#summary label"),
  50. +                    function(element)
  51. +                    {
  52. +                        element.querySelector("input").checked = false;
  53. +                        hide_result_class(element.parentNode.className);
  54. +                    });
  55. +        }
  56. +
  57. +        // This use of innerHTML plus manual escaping is not recommended in
  58. +        // general, but is necessary here for performance.  Using textContent
  59. +        // on each individual <td> adds tens of seconds of execution time for
  60. +        // large test suites (tens of thousands of tests).
  61.          log.appendChild(document.createElement("section"));
  62.          var html = "<h2>Details</h2><table id=results>"
  63.              + "<thead><tr><th>Result</th><th>Test Name</th><th>Message</th></tr></thead>"
  64.              + "<tbody>";
  65.          for (var i = 0; i < tests.length; i++) {
  66. -            html += "<tr><td></td><td></td><td></td></tr>";
  67. +            html += '<tr class="'
  68. +                + status_class(status_text[tests[i].status])
  69. +                + '"><td>'
  70. +                + status_text[tests[i].status]
  71. +                + "</td><td>"
  72. +                + tests[i].name.replace(/\&/g, "&amp;").replace(/</g, "&lt;")
  73. +                + "</td><td>"
  74. +                + (tests[i].message ? tests[i].message.replace(/\&/g, "&amp;").replace(/</g, "&lt;") : " ")
  75. +                + "</td></tr>";
  76.          }
  77.          log.lastChild.innerHTML = html + "</tbody></table>";
  78. -        var tbody = log.querySelector("tbody");
  79. -        for (var i = 0; i < tests.length; i++)
  80. -        {
  81. -            var tr = tbody.childNodes[i];
  82. -            tr.className = status_class(status_text[tests[i].status]);
  83. -            tr.childNodes[0].textContent = status_text[tests[i].status];
  84. -            tr.childNodes[1].textContent = tests[i].name;
  85. -            tr.childNodes[2].textContent = tests[i].message ? tests[i].message : " ";
  86. -        }
  87.      };
  88.  
  89.      var output = new Output();
  90.      add_start_callback(function (properties) {output.setup(properties);});
  91.      add_result_callback(function (test) {output.show_status(tests);});
  92.      add_completion_callback(function (tests, harness_status) {output.show_results(tests, harness_status);});
  93.  
  94.      /*
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement