Author: jbeard Date: Sat Jun 26 00:51:25 2010 New Revision: 958161 URL: http://svn.apache.org/viewvc?rev=958161&view=rev Log: Task runInBrowserUnitTestsWithSelenium working in build script.
Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js?rev=958161&r1=958160&r2=958161&view=diff ============================================================================== --- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js (original) +++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js Sat Jun 26 00:51:25 2010 @@ -366,7 +366,7 @@ require.def("build", }, - _genInBrowserHtml : function(fileDescriptor,testsGeneratedCollection){ + _genInBrowserHtml : function(fileDescriptor,testsGeneratedCollection,callback){ //for each type of browser (IE and non-IE) [though we can make this part dynamic //for each unit test script @@ -375,51 +375,47 @@ require.def("build", print("Generating in-browser html test files..."); + tailRecurse(unitTestScripts, + function(testModule,step){ + require([testModule], + function(testScript){ + var pathToSCXMLTest = testScript.scxmlTest; + + var compileTargets = [{scxmlTest:scxmlTest, backend:backend, isIE:isIE} + for (backend in backends) + for each (isIE in [true,false]) + for (scxmlTest in scxmlTests) + if ( scxmlTests[scxmlTest] == pathToSCXMLTest ) ]; + + compileTargets.forEach(function({scxmlTest:scxmlTestName, backend:backendName, isIE:isIE}){ + + //TODO: update this function to use RequireJS + var testHtml = inBrowserUnitTestHtmlTemplate(pathToSCXMLTest,testModule,backendName,isIE); + + //write testHtml + var fpath = buildDir + "/" + fileDescriptor + "_" + scxmlTestName + "_" + backendName + + (isIE ? "IE" : "") + ".html"; + + print("Writing in-browser html test file " + fpath); + + utilFile.writeFile(testHtml,fpath); + + //save the path to the html for running in selenium later + testsGeneratedCollection.push({ + path : fpath, + scxmlTest : scxmlTestName, + testCasePath : testModule, + backend : backendName, + ie : isIE + }); - var compileTargets = [{scxmlTest:scxmlTest, backend:backend, isIE:isIE} - for (scxmlTest in scxmlTests) - for (backend in backends) - for each (isIE in [true,false])]; - - compileTargets.forEach(function(target){ - //run the build script on the test - var scxmlTestName = target.scxmlTest; - var backendName = target.backend; - var isIE = target.isIE; - - var pathToSCXMLTest = scxmlTests[scxmlTestName]; - - var correspondingUnitTests = unitTestScripts.filter(function(t){return t.scxmlTest == pathToSCXMLTest}); - - correspondingUnitTests.forEach(function(unitTest){ - - var pathToUnitTest = unitTest.path; - - var relativePathToUnitTest = "../" + pathToUnitTest; - - var testHtml = inBrowserUnitTestHtmlTemplate(pathToSCXMLTest,relativePathToUnitTest,backendName,isIE); - - //write testHtml - var fpath = buildDir + "/" + fileDescriptor + "_" + scxmlTestName + "_" + backendName - + (isIE ? "IE" : "") + ".html"; - - print("Writing in-browser html test file " + fpath); - - utilFile.writeFile(testHtml,fpath); - - //save the path to the html for running in selenium later - testsGeneratedCollection.push({ - path : fpath, - scxmlTest : scxmlTestName, - testCasePath : pathToUnitTest, - backend : backendName, - ie : isIE - }); - - }); + + }); - - }); + step(); + }); + }, + callback); }, @@ -607,81 +603,84 @@ require.def("build", }); }, - genInBrowserUnitTestHtml : function(){ + genInBrowserUnitTestHtml : function(callback){ print("Generating html performance test files..."); - this._genInBrowserHtml("in-browser-unit",htmlInBrowserUnitTestsGenerated); + this._genInBrowserHtml("in-browser-unit",htmlInBrowserUnitTestsGenerated,callback); }, runInBrowserUnitTestsWithSelenium : function(){ - this.genInBrowserUnitTestHtml(); + this.genInBrowserUnitTestHtml(function(){ - print("Running Selenium unit tests..."); + print("Running Selenium unit tests..."); - for(var browserName in browsers){ + for(var browserName in browsers){ - print("Running test for " + browserName + "..."); + print("Running test for " + browserName + "..."); - var bSpec = browsers[browserName]; - var bSel = new DefaultSelenium(bSpec.host, bSpec.port, bSpec.browser, seleniumConf.rootUrl); - bSel.start(); + var bSpec = browsers[browserName]; + var bSel = new DefaultSelenium(bSpec.host, bSpec.port, bSpec.browser, seleniumConf.rootUrl); + bSel.start(); - htmlInBrowserUnitTestsGenerated.forEach(function(htmlTest){ - //ensure we are not testing an ie html test - //on a non-ie browser - if(htmlTest.ie == bSpec.ie){ + htmlInBrowserUnitTestsGenerated.forEach(function(htmlTest){ + //ensure we are not testing an ie html test + //on a non-ie browser + if(htmlTest.ie == bSpec.ie){ - var unitTestResult = unitTestWithSelenium(bSel,htmlTest.path); + var unitTestResult = unitTestWithSelenium(bSel,htmlTest.path); - var unitTestResultObj = { - data : unitTestResult, - browser : browserName, - scxmlTest : htmlTest.scxmlTest, - backend : htmlTest.backend, - }; + var unitTestResultObj = { + data : unitTestResult, + browser : browserName, + scxmlTest : htmlTest.scxmlTest, + backend : htmlTest.backend, + }; - unitTestResults.push(unitTestResultObj); + unitTestResults.push(unitTestResultObj); - //report errors and failures that may occur - if(unitTestResult.failCount || unitTestResult.errorCount){ - print("UNIT TEST ERROR"); - print(JSON.stringify(unitTestResultObj)); + //report errors and failures that may occur + if(unitTestResult.failCount || unitTestResult.errorCount){ + print("UNIT TEST ERROR"); + print(JSON.stringify(unitTestResultObj)); + } } - } - }); + }); - bSel.stop(); - } + bSel.stop(); + } - //make one big, self-describing data structure - //this is what analyze uses to do its analyses - allUnitTestResults = { - //FIXME: maybe make this an obj, so that we can add more info to it (for reports, etc.) - data : unitTestResults, - browsers : browsers, - backends : backends, - scxmlTests : scxmlTests - }; + //make one big, self-describing data structure + //this is what analyze uses to do its analyses + allUnitTestResults = { + //FIXME: maybe make this an obj, so that we can add more info to it (for reports, etc.) + data : unitTestResults, + browsers : browsers, + backends : backends, + scxmlTests : scxmlTests + }; - //stringify it, and serialize it for posterity - var allUnitTestResultsString = - JSON.stringify(allUnitTestResults) + //stringify it, and serialize it for posterity + var allUnitTestResultsString = + JSON.stringify(allUnitTestResults) + + + //print report that says whether all tests passed + var totalTests = unitTestResults.reduce(function(a,b){return a + b.data.testCount},0); + var totalTestsFailed = unitTestResults.reduce(function(a,b){return a + b.data.errorCount},0); + var totalTestsErrored = unitTestResults.reduce(function(a,b){return a + b.data.failCount},0); + var totalTestsPassed = unitTestResults.reduce(function(a,b){return a + b.data.testsPassed},0); + + print("Test Results:"); + print("Total Tests: " + totalTests); + print("Total Tests Failed: " + totalTestsFailed); + print("Total Tests Errored: " + totalTestsErrored); + print("Total Tests Passed: " + totalTestsPassed); + + var unitTestResultsPath = "build/allUnitTestResults.json"; + print("writing a summary of performance results to " + unitTestResultsPath); + utilFile.writeFile(allUnitTestResultsString, unitTestResultsPath); + }); - //print report that says whether all tests passed - var totalTests = unitTestResults.reduce(function(a,b){return a + b.data.testCount},0); - var totalTestsFailed = unitTestResults.reduce(function(a,b){return a + b.data.errorCount},0); - var totalTestsErrored = unitTestResults.reduce(function(a,b){return a + b.data.failCount},0); - var totalTestsPassed = unitTestResults.reduce(function(a,b){return a + b.data.testsPassed},0); - - print("Test Results:"); - print("Total Tests: " + totalTests); - print("Total Tests Failed: " + totalTestsFailed); - print("Total Tests Errored: " + totalTestsErrored); - print("Total Tests Passed: " + totalTestsPassed); - - var unitTestResultsPath = "build/allUnitTestResults.json"; - print("writing a summary of performance results to " + unitTestResultsPath); - utilFile.writeFile(allUnitTestResultsString, unitTestResultsPath); }, @@ -828,7 +827,7 @@ require.def("build", </html> } - function inBrowserUnitTestHtmlTemplate(modulePathToXMLTest,testScriptRelativePath,backendName,isIE){ + function inBrowserUnitTestHtmlTemplate(modulePathToXMLTest,testScriptModulePath,backendName,isIE){ default xml namespace = ""; return <html> <head> @@ -842,7 +841,6 @@ require.def("build", window.doh._onEnd = function() { window.dohIsComplete = true; window.oldDohOnEnd.apply(window.doh); }; </script> <script src="../test/testHelpers.js" type="text/javascript">true;</script> - <script src={testScriptRelativePath} type="text/javascript">true;</script> <script> var resultText; @@ -851,8 +849,9 @@ require.def("build", "baseUrl":"/" }, [ "src/javascript/scxml/cgf/SCXMLCompiler", - "xml!{modulePathToXMLTest}"], - function(compiler,KitchenSink_executableContent){ + "xml!{modulePathToXMLTest}", + "{testScriptModulePath}"], + function(compiler,KitchenSink_executableContent,testScriptModule){ var compileLog = true; compiler.compile({ @@ -869,7 +868,9 @@ require.def("build", //eval eval(transformedJs); - window.StatechartExecutionContext = StatechartExecutionContext; + + testScriptModule.register(StatechartExecutionContext); + dojo.require("doh.runner"); doh.run(); });