Sisyphus|JavaScript Tests - Spider's userhook can be stopped by exceptions in tests, bug 428391

This commit is contained in:
bclary@bclary.com 2008-04-10 13:54:08 -07:00
Родитель 9482e7f0fb
Коммит 1f2dfdc560
1 изменённых файлов: 82 добавлений и 52 удалений

Просмотреть файл

@ -51,18 +51,25 @@ var gPageStop;
function userOnStart() function userOnStart()
{ {
dlog('userOnStart'); try
cdump('JavaScriptTest: Begin Run'); {
registerDialogCloser(); dlog('userOnStart');
cdump('JavaScriptTest: Begin Run');
registerDialogCloser();
}
catch(ex)
{
cdump('Spider: FATAL ERROR: userOnStart: ' + ex);
}
} }
function userOnBeforePage() function userOnBeforePage()
{ {
dlog('userOnBeforePage');
gPageStart = new Date();
try try
{ {
dlog('userOnBeforePage');
gPageStart = new Date();
gCurrentTestId = /test=(.*);language/.exec(gSpider.mCurrentUrl.mUrl)[1]; gCurrentTestId = /test=(.*);language/.exec(gSpider.mCurrentUrl.mUrl)[1];
gCurrentTestValid = true; gCurrentTestValid = true;
cdump('JavaScriptTest: Begin Test ' + gCurrentTestId); cdump('JavaScriptTest: Begin Test ' + gCurrentTestId);
@ -70,7 +77,7 @@ function userOnBeforePage()
} }
catch(ex) catch(ex)
{ {
cdump('userOnBeforePage: ' + ex); cdump('Spider: WARNING ERROR: userOnBeforePage: ' + ex);
gCurrentTestValid = false; gCurrentTestValid = false;
gPageCompleted = true; gPageCompleted = true;
} }
@ -78,19 +85,35 @@ function userOnBeforePage()
function userOnAfterPage() function userOnAfterPage()
{ {
dlog('userOnAfterPage'); try
gPageStop = new Date(); {
dlog('userOnAfterPage');
gPageStop = new Date();
cdump(gSpider.mCurrentUrl.mUrl + ': PAGE STATUS: NORMAL (' + ((gPageStop - gPageStart)/1000).toFixed(0) + ' seconds)'); cdump(gSpider.mCurrentUrl.mUrl + ': PAGE STATUS: NORMAL (' + ((gPageStop - gPageStart)/1000).toFixed(0) + ' seconds)');
checkTestCompleted(); checkTestCompleted();
}
catch(ex)
{
cdump('Spider: WARNING ERROR: userOnAfterPage: ' + ex);
gCurrentTestValid = false;
gPageCompleted = true;
}
} }
function userOnStop() function userOnStop()
{ {
// close any pending dialogs try
cdump('JavaScriptTest: End Run'); {
closeDialog(); // close any pending dialogs
unregisterDialogCloser(); cdump('JavaScriptTest: End Run');
closeDialog();
unregisterDialogCloser();
}
catch(ex)
{
cdump('Spider: WARNING ERROR: userOnStop: ' + ex);
}
} }
function userOnPageTimeout() function userOnPageTimeout()
@ -111,7 +134,7 @@ function userOnPageTimeout()
} }
catch(ex) catch(ex)
{ {
cdump('userOnPageTimeout: ' + ex); cdump('Spider: WARNING ERROR: userOnPageTimeout: ' + ex);
} }
} }
cdump('JavaScriptTest: End Test ' + gCurrentTestId); cdump('JavaScriptTest: End Test ' + gCurrentTestId);
@ -119,53 +142,60 @@ function userOnPageTimeout()
function checkTestCompleted() function checkTestCompleted()
{ {
dlog('checkTestCompleted()'); try
var win = gSpider.mDocument.defaultView;
if (win.wrappedJSObject)
{ {
win = win.wrappedJSObject; dlog('checkTestCompleted()');
}
if (!gCurrentTestValid) var win = gSpider.mDocument.defaultView;
{ if (win.wrappedJSObject)
gPageCompleted = true;
}
else if (win.gPageCompleted)
{
gCurrentTestStop = new Date();
// gc to flush out issues quickly
collectGarbage();
dlog('Page Completed');
var gTestcases = win.gTestcases;
if (typeof gTestcases == 'undefined')
{ {
cdump('JavaScriptTest: ' + gCurrentTestId + win = win.wrappedJSObject;
' gTestcases array not defined. Possible test failure.');
throw 'gTestcases array not defined. Possible test failure.';
} }
else if (gTestcases.length == 0)
if (!gCurrentTestValid)
{ {
cdump('JavaScriptTest: ' + gCurrentTestId + gPageCompleted = true;
' gTestcases array is empty. Tests not run.'); }
new win.TestCase(win.gTestFile, win.summary, 'Unknown', 'gTestcases array is empty. Tests not run..'); else if (win.gPageCompleted)
{
gCurrentTestStop = new Date();
// gc to flush out issues quickly
collectGarbage();
dlog('Page Completed');
var gTestcases = win.gTestcases;
if (typeof gTestcases == 'undefined')
{
cdump('JavaScriptTest: ' + gCurrentTestId +
' gTestcases array not defined. Possible test failure.');
throw 'gTestcases array not defined. Possible test failure.';
}
else if (gTestcases.length == 0)
{
cdump('JavaScriptTest: ' + gCurrentTestId +
' gTestcases array is empty. Tests not run.');
new win.TestCase(win.gTestFile, win.summary, 'Unknown', 'gTestcases array is empty. Tests not run..');
}
else
{
}
cdump('JavaScriptTest: ' + gCurrentTestId + ' Elapsed time ' + ((gCurrentTestStop - gCurrentTestStart)/1000).toFixed(2) + ' seconds');
cdump('JavaScriptTest: End Test ' + gCurrentTestId);
gPageCompleted = true;
} }
else else
{ {
dlog('page not completed, recheck');
setTimeout(checkTestCompleted, gCheckInterval);
} }
cdump('JavaScriptTest: ' + gCurrentTestId + ' Elapsed time ' + ((gCurrentTestStop - gCurrentTestStart)/1000).toFixed(2) + ' seconds');
cdump('JavaScriptTest: End Test ' + gCurrentTestId);
gPageCompleted = true;
} }
else catch(ex)
{ {
dlog('page not completed, recheck'); cdump('Spider: WARNING ERROR: checkTestCompleted: ' + ex);
setTimeout(checkTestCompleted, gCheckInterval); gPageCompleted = true;
} }
} }
gConsoleListener.onConsoleMessage = gConsoleListener.onConsoleMessage =