cut and paste error after the old example, should also include the line window.location = "test/index.html";
On Sat, May 16, 2009 at 2:07 AM, chris thatcher < thatcher.christop...@gmail.com> wrote: > hi john, your right that is where it should be done. the problem arises > from the fact that we load the scripts for the test from the html itself, as > part of the browser emulation process. this means that we can only affect > the global scope before the html is loaded, onload, and after load. > otherwise we would need to copy the script loading process outside of the > native browser loading process and either duplicate the process (at best) > and usually only approach something similar. > > for example our old script for kick off the tests was: > > // Init > load("build/runtest/env.js"); > > var isLocal; > window.onload = function(){ > isLocal = !!(window.location.protocol == 'file:'); > > // Load the test runner > load("dist/jquery.js", > "build/runtest/testrunner.js"); > > // Load the tests > load( > "test/unit/core.js", > "test/unit/selector.js", > "test/unit/event.js", > "test/unit/fx.js", > "test/unit/dimensions.js", > "test/unit/data.js", > > // offset relies on window.open, which is currently unimplemented > in env.js > //"test/unit/offset.js", > > // these tests require hitting a server, so we will need some > clever env.js > // way of testing them > "test/unit/ajax.js" > ); > > // Display the results > results(); > }; > > and now its just: > > (function($env){ > > //let it load the script from the html > $env.scriptTypes = { > "text/javascript" :true > }; > > var count = 0; > window.console = { > log: function(result, message){ > $env.log('(' + (count++) + ')[' + ((!!result) ? 'PASS' : > 'FAIL') + '] ' + message); > } > }; > > window.onload = function(){ > $env.warn('Defining QUnit.done'); > QUnit.done = function(pass, fail){ > $env.warn('Writing Results to File'); > jQuery('script').each(function(){ > this.type = 'text/envjs'; > }); > $env.writeToFile( > document.documentElement.xml, > $env.location('jqenv.html') > ); > }; > > } > > window.location = "test/index.html"; > > })(Envjs); > > where i did modify the qunit to define QUnit.log as in the last email. > > does this make sense? the latter approach lets the html essentially define > everything we need to know and just load and go, setting up our hooks prior > to setting window.location > > thatcher > > > On Fri, May 15, 2009 at 4:52 PM, John Resig <jere...@gmail.com> wrote: > >> I'm confused - why are you attaching the QUnit.done/log handlers inside >> window.onload? Ideally they should be the very first thing done (after >> loading the test suite itself). >> >> --John >> >> >> On Tue, May 12, 2009 at 10:59 PM, chris thatcher < >> thatcher.christop...@gmail.com> wrote: >> >>> I noticed we where using an older testrunner.js with envjs even when >>> running 1.3.2 unit tests. i start playing with it and realized qunit works >>> great and i can even use QUnit.done to output a static html file with the >>> result of running the tests in envjs. the only snag I had was being able to >>> hook to QUnit.log . this may be a bug with envjs implementation of onload >>> so please feel free to point out if im mistaken. >>> >>> here is the script that initiates it: >>> >>> load("build/runtest/env.js"); >>> >>> (function($env){ >>> >>> //let it load the script from the html >>> $env.scriptTypes = { >>> "text/javascript" :true >>> }; >>> >>> var count = 0; >>> window.onload = function(){ >>> >>> //this doesnt work because onload isn't called until after the >>> tests run >>> QUnit.log = function(result, message){ >>> $env.log('('+(count++)+')['+((!!result)?'PASS':'FAIL')+'] ' + >>> message ); >>> }; >>> >>> //this works because done is called from syncronize() >>> QUnit.done = function(pass, fail){ >>> //write resulting window less scripts to an html file >>> jQuery('script').each(function(){ >>> this.type = 'text/envjs'; >>> }); >>> $env.writeToFile( >>> document.documentElement.xml, >>> $env.location('jqenv.html') >>> ); >>> }; >>> >>> }; >>> >>> window.location = "test/index.html"; >>> >>> })(__env__); >>> >>> >>> I was wondering if you could either add a synchronized 'begin' or let log >>> just be global >>> >>> $.extend(window, { >>> ///... >>> log: log?log:function(result, message); >>> }); >>> >>> thanks >>> thatcher >>> -- >>> Christopher Thatcher >>> >>> >>> >> >> >> >> > > > -- > Christopher Thatcher > -- Christopher Thatcher --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---