1(function(){
2if (typeof QUnit !== 'undefined'){
3    var QUnitAutostart = (QUnit.config.autostart === undefined) ? true : QUnit.config.autostart;
4
5    //check to make sure requirejs is completed before we start the test runner
6    var allLoaded = function() {
7        return window.QUnit.config.queue.length > 0 && blanket.noConflict().requireFilesLoaded();
8    };
9
10    function shouldAutoStart() {
11        return !(blanket.options("existingRequireJS") && !blanket.options("autoStart")) && QUnitAutostart;
12    }
13
14    if (!QUnit.config.urlConfig[0].tooltip){
15        //older versions we run coverage automatically
16        //and we change how events are binded
17        QUnit.begin=function(){
18            blanket.noConflict().setupCoverage();
19        };
20
21        QUnit.done=function(failures, total) {
22            blanket.noConflict().onTestsDone();
23        };
24        QUnit.moduleStart=function( details ) {
25            blanket.noConflict().onModuleStart();
26        };
27        QUnit.testStart=function( details ) {
28            blanket.noConflict().onTestStart();
29        };
30        QUnit.testDone=function( details ) {
31            blanket.noConflict().onTestDone(details.total,details.passed);
32        };
33        blanket.beforeStartTestRunner({
34            condition: allLoaded,
35            callback: QUnit.start
36        });
37    }else{
38        QUnit.config.urlConfig.push({
39            id: "coverage",
40            label: "Enable coverage",
41            tooltip: "Enable code coverage."
42        });
43
44        if ( QUnit.urlParams.coverage || blanket.options("autoStart") ) {
45            QUnit.config.autostart = false;
46            QUnit.begin(function(){
47                blanket.noConflict().setupCoverage();
48            });
49
50            QUnit.done(function(failures, total) {
51                blanket.noConflict().onTestsDone();
52            });
53            QUnit.moduleStart(function( details ) {
54                blanket.noConflict().onModuleStart();
55            });
56            QUnit.testStart(function( details ) {
57                blanket.noConflict().onTestStart();
58            });
59            QUnit.testDone(function( details ) {
60                blanket.noConflict().onTestDone(details.total,details.passed);
61            });
62            blanket.noConflict().beforeStartTestRunner({
63                condition: allLoaded,
64                callback: function(){
65                    if (shouldAutoStart()){
66                        QUnit.start();
67                    }
68                }
69            });
70        }
71    }
72}
73})();