aboutsummaryrefslogtreecommitdiffstats
path: root/test/harness/helper.js
diff options
context:
space:
mode:
authorDavid Fugate <dfugate@microsoft.com>2011-09-13 16:22:37 -0700
committerDavid Fugate <dfugate@microsoft.com>2011-09-13 16:22:37 -0700
commitcbc587c61b59a7a9cdb74dc4d7140b0ef80ee99c (patch)
tree5e97eff8bf3012cdb989773c804e771db55297b2 /test/harness/helper.js
parentbba34a262ebb3405dacbee9b48cd096c46ccef7c (diff)
parent33a175689e5757b4363b80eb95f16151e5f2489c (diff)
Merge.
Diffstat (limited to 'test/harness/helper.js')
-rw-r--r--test/harness/helper.js378
1 files changed, 193 insertions, 185 deletions
diff --git a/test/harness/helper.js b/test/harness/helper.js
index 1e8e5b429..fb0504a87 100644
--- a/test/harness/helper.js
+++ b/test/harness/helper.js
@@ -22,7 +22,6 @@
function Presenter() {
var altStyle = '',
logger,
- progressBar,
date,
version,
table,
@@ -31,45 +30,96 @@ function Presenter() {
globalSection = new Section(null, "0", "ECMA-262"),
currentSection = globalSection,
tests = {},
- totalTests = 0,
-
- TOCFILEPATH = "resources/scripts/global/ecma-262-toc.xml",
- activityBar;
+ totalTests = 0;
+ var progressBar;
+ TOCFILEPATH = "resources/scripts/global/ecma-262-toc.xml";
+ //**INTERFACE****************************************************************
+ /* Updates progress with the given test, which should have its results in it as well. */
+ this.addTestResult = function(test) {
+ tests[test.id] = test;
+ getSectionById(test.id).addTest(test);
- /* Load the table of contents xml to populate the sections. */
- function loadSections() {
- var sectionsLoader = new XMLHttpRequest();
- sectionsLoader.open("GET", TOCFILEPATH, false);
- sectionsLoader.send();
- var xmlDoc = sectionsLoader.responseXML;
- var nodes = xmlDoc.documentElement.childNodes;
+ updateCounts();
- addSectionsFromXML(nodes, globalSection);
+ if(test.result === 'fail') {
+ logResult(test);
+ }
+ }
+
+ this.setVersion = function(v) {
+ version = v;
+ $(".targetTestSuiteVersion").text(v);
+ }
+
+ this.setDate = function(d) {
+ date = d;
+ $(".targetTestSuiteDate").text(d);
+ }
+
+ this.setTotalTests = function(tests) {
+ totalTests = tests;
+ $('#testsToRun').text(tests);
+ }
+
+ /* Write status to the activity bar. */
+ this.updateStatus = function (str) {
+ this.activityBar.text(str);
+ }
+
+ this.finished = function(elapsed) {
+ $('.button-start').attr('src', 'resources/images/start.png');
+ //progressBar.text("Testing complete!");
+ if (isSiteDebugMode()) {
+ this.activityBar.text('Overall Execution Time: ' + elapsed + ' minutes');
+ } else {
+ this.activityBar.text('');
+ }
+ }
+
+ this.started = function () {
+ $('.button-start').attr('src', 'resources/images/pause.png');
}
+ this.paused = function () {
+ $('.button-start').attr('src', 'resources/images/resume.png');
+ }
- /* Recursively parses the TOC xml, producing nested sections. */
- function addSectionsFromXML(nodes, parentSection){
- var subsection;
+ this.reset = function() {
+ globalSection.reset();
+ updateCounts();
+ logger.empty();
- for (var i = 0; i < nodes.length; i++) {
- if (nodes[i].nodeName === "sec") {
- subsection = new Section(parentSection,
- nodes[i].getAttribute('id'),
- nodes[i].getAttribute('name'));
- parentSection.subsections[subsection.id.match(/\d+$/)] =
- subsection;
- addSectionsFromXML(nodes[i].childNodes, subsection);
- }
- }
+ currentSection = globalSection;
+ renderCurrentSection();
}
-
+
+
+ /* Do some setup tasks. */
+ this.setup = function() {
+ backLink = $('#backlinkDiv');
+ backLink.click(goBack);
+ table = $('.results-data-table');
+
+ logger = $("#tableLogger");
+ progressBar = $('#progressbar');
+ this.activityBar = $('#nextActivity');
+
+ $('a.showSource', logger).live("click", openSourceWindow);
+ $('a.showError', logger).live("click", openErrorWindow);
+ $('#ancGenXMLReport').click(createXMLReportWindow);
+ }
+
+ /* Refresh display of the report */
+ this.refresh = function() {
+ renderCurrentSection();
+ }
+
+ //**IMPLEMENTATION DETAILS***************************************************
/* Renders the current section into the report window. */
function renderCurrentSection() {
renderBreadcrumbs();
-
if(globalSection.totalTests === 0) {
$('#resultMessage').show();
} else {
@@ -80,56 +130,13 @@ function Presenter() {
$('.passedCases').text(currentSection.totalPassed);
$('.failedCases').text(currentSection.totalFailed);
$('#failedToLoadCounterDetails').text(currentSection.totalFailedToLoad);
-
table.empty();
table.append(currentSection.toHTML());
-
// Observe section selection and show source links
$('a.section', table).click(sectionSelected);
$('a.showSource', table).click(openSourceWindow);
}
- /* Renders the breadcrumbs for report navigation. */
- function renderBreadcrumbs() {
- var container = $('div.crumbContainer div.crumbs');
- var sectionChain = [];
-
- var current = currentSection;
-
- // Walk backwards until we reach the global section.
- while(current !== globalSection &&
- current.parentSection !== globalSection) {
- sectionChain.push(current);
- current = current.parentSection;
- }
-
- // Reverse the array since we want to print earlier sections first.
- sectionChain.reverse();
-
- // Empty any existing breadcrumbs.
- container.empty();
-
- // Static first link to go back to the root.
- var link = $("<a href='#0' class='setBlack'>Test Sections &gt; </a>");
- link.bind('click', {sectionId: 0}, sectionSelected);
- container.append(link);
-
- for(var i = 0; i < sectionChain.length;i++) {
- link = $("<a href='#" + sectionChain[i].id + "' class='setBlack'>" +
- sectionChain[i].id + ": " + sectionChain[i].name +
- " &gt; </a>");
- link.bind('click', sectionSelected);
- container.append(link);
- }
-
- // If we can go back, show the back link.
- if(sectionChain.length > 0) {
- backLink.show();
- } else {
- backLink.hide();
- }
- }
-
/* Opens a window with a test's source code. */
function openSourceWindow(e) {
var test = tests[e.target.href.match(/#(.+)$/)[1]],
@@ -160,60 +167,22 @@ function Presenter() {
popWnd.document.write(innerHTML);
}
- /* Pops up a window with an xml dump of the results of a test. */
- function createXMLReportWindow() {
- var reportWindow; //window that will output the xml data
- var xmlData; //array instead of string concatenation
- var dateNow;
- var xml; // stop condition of for loop stored in a local
- // variable to improve performance
-
- dateNow = new Date();
-
- xml = '<testRun>\r\n' +
- '<userAgent>' + window.navigator.userAgent + '</userAgent>\r\n' +
- '<Date>' + dateNow.toDateString() + '</Date>\r\n' +
- '<targetTestSuiteName>ECMAScript Test262 Site' +
- '</targetTestSuiteName>\r\n' +
- '<targetTestSuiteVersion>' + version + '</targetTestSuiteVersion>\r\n' +
- '<targetTestSuiteDate>' + date + '</targetTestSuiteDate>\r\n' +
- ' <Tests>\r\n\r\n';
-
- reportWindow = window.open();
- reportWindow.document.writeln("<title>ECMAScript Test262 XML</title>");
- reportWindow.document.write(
- "<textarea id='results' style='width: 100%; height: 800px;'>");
- reportWindow.document.write(xml);
- reportWindow.document.write(globalSection.toXML());
- reportWindow.document.write(
- '</Tests>\r\n</testRun>\r\n</textarea>\r\n');
- reportWindow.document.close();
- }
-
- /* Callback for when the user clicks on a section in the report table. */
- function sectionSelected(e) {
- e.preventDefault();
- currentSection = getSectionById(e.target.href.match(/#(.+)$/)[1]);
- renderCurrentSection();
- table.attr("scrollTop", 0);
- }
-
- /* Go back to the previous section */
- function goBack(e) {
- e.preventDefault();
-
- if(currentSection === globalSection)
- return;
-
- currentSection = currentSection.parentSection;
+ /* Opens a window with a test's failure message. */
+ function openErrorWindow(e) {
+ var test = tests[e.target.href.match(/#(.+)$/)[1]],
+ popWnd = window.open("", "", "scrollbars=1, resizable=1"),
+ innerHTML = '';
- // Since users click directly on sub-chapters of the main
- // chapters, don't go back to main
- // chapters.
- if(currentSection.parentSection === globalSection)
- currentSection = globalSection;
+ innerHTML += '<b>Test </b>';
+ innerHTML += '<b>' + test.id + '</b> <br /><br />';
- renderCurrentSection();
+ innerHTML += '<b>Failure</b>';
+ innerHTML += '<pre>' + test.error + '</pre>';
+
+ innerHTML += '<br /><br /><b>Testcase</b>';
+ innerHTML += '<pre>' + test.code + '</pre>';
+
+ popWnd.document.write(innerHTML);
}
/* Returns the section object for the specified section id
@@ -233,7 +202,6 @@ function Presenter() {
break;
}
}
-
return section;
}
@@ -244,7 +212,6 @@ function Presenter() {
$('#totalCounter').text(globalSection.totalTests);
$('#failedToLoadCounter1').text(globalSection.totalFailedToLoad);
$('#failedToLoadCounter').text(globalSection.totalFailedToLoad);
-
progressBar.reportprogress(globalSection.totalTests, totalTests);
}
@@ -259,86 +226,127 @@ function Presenter() {
logger.append(appendStr);
logger.parent().attr("scrollTop", logger.parent().attr("scrollHeight"));
}
+
+
+
+ //*************************************************************************
+ /* Go back to the previous section */
+ function goBack(e) {
+ e.preventDefault();
- // Load the sections.
- loadSections();
+ if(currentSection === globalSection)
+ return;
- this.setTotalTests = function(tests) {
- totalTests = tests;
- $('#testsToRun').text(tests);
- };
+ currentSection = currentSection.parentSection;
- this.setVersion = function(v) {
- version = v;
- $(".targetTestSuiteVersion").text(v);
- };
+ // Since users click directly on sub-chapters of the main chapters, don't go back to main
+ // chapters.
+ if(currentSection.parentSection === globalSection)
+ currentSection = globalSection;
- this.setDate = function(d) {
- date = d;
- $(".targetTestSuiteDate").text(d);
- };
+ renderCurrentSection();
+ }
+
+ /* Load the table of contents xml to populate the sections. */
+ function loadSections() {
+ var sectionsLoader = new XMLHttpRequest();
+ sectionsLoader.open("GET", TOCFILEPATH, false);
+ sectionsLoader.send();
+ var xmlDoc = sectionsLoader.responseXML;
+ var nodes = xmlDoc.documentElement.childNodes;
- /* Updates progress with the given test, which should have its
- * results in it as well.
- */
- this.addTestResult = function(test) {
- tests[test.id] = test;
- getSectionById(test.id).addTest(test);
+ addSectionsFromXML(nodes, globalSection);
+ }
- updateCounts();
- if(test.result === 'fail')
- logResult(test);
+ /* Recursively parses the TOC xml, producing nested sections. */
+ function addSectionsFromXML(nodes, parentSection){
+ var subsection;
- };
+ for (var i = 0; i < nodes.length; i++) {
+ if (nodes[i].nodeName === "sec") {
+ subsection = new Section(parentSection, nodes[i].getAttribute('id'), nodes[i].getAttribute('name'));
+ parentSection.subsections[subsection.id.match(/\d+$/)] = subsection;
+ addSectionsFromXML(nodes[i].childNodes, subsection);
+ }
+ }
+ }
+
+ /* Renders the breadcrumbs for report navigation. */
+ function renderBreadcrumbs() {
+ var container = $('div.crumbContainer div.crumbs');
+ var sectionChain = [];
- this.started = function () {
- $('.button-start').attr('src', 'resources/images/pause.png');
- };
+ var current = currentSection;
- this.paused = function () {
- $('.button-start').attr('src', 'resources/images/resume.png');
- };
+ // Walk backwards until we reach the global section.
+ while(current !== globalSection && current.parentSection !== globalSection) {
+ sectionChain.push(current);
+ current = current.parentSection;
+ }
- this.reset = function() {
- globalSection.reset();
- updateCounts();
- logger.empty();
+ // Reverse the array since we want to print earlier sections first.
+ sectionChain.reverse();
- currentSection = globalSection;
- renderCurrentSection();
- };
+ // Empty any existing breadcrumbs.
+ container.empty();
- this.finished = function(elapsed) {
- $('.button-start').attr('src', 'resources/images/start.png');
- if (isSiteDebugMode()) {
- activityBar.text('Overall Execution Time: ' + elapsed + ' minutes');
+ // Static first link to go back to the root.
+ var link = $("<a href='#0' class='setBlack'>Test Sections &gt; </a>");
+ link.bind('click', {sectionId: 0}, sectionSelected)
+ container.append(link);
+
+ for(var i = 0; i < sectionChain.length;i++) {
+ link = $("<a href='#" + sectionChain[i].id + "' class='setBlack'>" + sectionChain[i].id + ": " + sectionChain[i].name + " &gt; </a>");
+ link.bind('click', sectionSelected)
+ container.append(link);
+ }
+
+ // If we can go back, show the back link.
+ if(sectionChain.length > 0) {
+ backLink.show();
} else {
- activityBar.text('');
+ backLink.hide();
}
};
+
+ /* Pops up a window with an xml dump of the results of a test. */
+ function createXMLReportWindow() {
+ var reportWindow; //window that will output the xml data
+ var xmlData; //array instead of string concatenation
+ var dateNow;
+ var xml; // stop condition of for loop stored in a local variable to improve performance
- /* Refresh display of the report */
- this.refresh = function() {
- renderCurrentSection();
- };
+ dateNow = new Date();
- /* Write status to the activity bar. */
- this.updateStatus = function(str) {
- activityBar.text(str);
- };
+ xml = '<testRun>\r\n' +
+ '<userAgent>' + window.navigator.userAgent + '</userAgent>\r\n' +
+ '<Date>' + dateNow.toDateString() + '</Date>\r\n' +
+ '<targetTestSuiteName>ECMAScript Test262 Site</targetTestSuiteName>\r\n' +
+ '<targetTestSuiteVersion>' + version + '</targetTestSuiteVersion>\r\n' +
+ '<targetTestSuiteDate>' + date + '</targetTestSuiteDate>\r\n' +
+ ' <Tests>\r\n\r\n';
- /* Do some setup tasks. */
- this.setup = function() {
- backLink = $('#backlinkDiv');
- backLink.click(goBack);
- table = $('.results-data-table');
- logger = $("#tableLogger");
- progressBar = $('#progressbar');
- activityBar = $('#nextActivity');
- $('a.showSource', logger).live("click", openSourceWindow);
- $('#ancGenXMLReport').click(createXMLReportWindow);
+ reportWindow = window.open();
+ reportWindow.document.writeln("<title>ECMAScript Test262 XML</title>");
+ reportWindow.document.write("<textarea id='results' style='width: 100%; height: 800px;'>");
+ reportWindow.document.write(xml);
+ reportWindow.document.write(globalSection.toXML());
+ reportWindow.document.write('</Tests>\r\n</testRun>\r\n</textarea>\r\n');
+ reportWindow.document.close();
+ }
+
+ /* Callback for when the user clicks on a section in the report table. */
+ function sectionSelected(e) {
+ e.preventDefault();
+ currentSection = getSectionById(e.target.href.match(/#(.+)$/)[1]);
+ renderCurrentSection();
+ table.attr("scrollTop", 0);
};
+
+ //*************************************************************************
+ // Load the sections.
+ loadSections();
}
var presenter = new Presenter();