LCOV - code coverage report
 
Current view: directory - /home/trostler/JUTE/backend/nodejute/jute/actions - getTest.js (source / functions) Found Hit Coverage
Test: lcov.info Lines: 36 36 100.0 %
Date: Tue Aug 09 12:41:36 GMT-07:00 2011 Functions: 3 3 100.0 %
Colors: not hit hit
 
 


             1          : /*
             2          : Copyright (c) 2011, Yahoo! Inc.
             3          : All rights reserved.
             4          : 
             5          : Redistribution and use of this software in source and binary forms, 
             6          : with or without modification, are permitted provided that the following 
             7          : conditions are met:
             8          : 
             9          : * Redistributions of source code must retain the above
            10          :   copyright notice, this list of conditions and the
            11          :   following disclaimer.
            12          : 
            13          : * Redistributions in binary form must reproduce the above
            14          :   copyright notice, this list of conditions and the
            15          :   following disclaimer in the documentation and/or other
            16          :   materials provided with the distribution.
            17          : 
            18          : * Neither the name of Yahoo! Inc. nor the names of its
            19          :   contributors may be used to endorse or promote products
            20          :   derived from this software without specific prior
            21          :   written permission of Yahoo! Inc.
            22          : 
            23          : THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 
            24          : IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
            25          : TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
            26          : PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
            27          : OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
            28          : SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
            29          : LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
            30          : DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
            31          : THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
            32          : (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
            33          : OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
            34          : */
            35          : 
            36          : 
            37        1 : module.exports = {
            38          :     Create:  function(hub, common, glob) {
            39          :         // Javascript is single threaded!  We don't have to worry about concurrency!
            40        1 :         var path = require('path');
            41          : 
            42          :         // Events I care about
            43        1 :         hub.addListener('action:get_test', getTest);
            44          : 
            45        1 :         function getTest(req, res, cache) {
            46        6 :             var browser  = req.session.uuid,
            47          :                 bName    = common.browserName(req),
            48          :                 now      = new Date().getTime(),
            49          :                 testURL;
            50          : 
            51        6 :             if (!cache.browsers[browser]) {
            52        6 :                 cache.browsers[browser] = {};
            53          :             }
            54          : 
            55        6 :             cache.browsers[browser].get_test = now;
            56          : 
            57        6 :             hub.emit(hub.LOG, hub.INFO, 'Getting test for ' + bName);
            58          : 
            59        6 :             for (var i = 0; i < cache.tests_to_run.length; i++) {
            60        4 :                 var test = cache.tests_to_run[i];
            61        4 :                 if ((test.browser == browser) && test.running) {
            62          :                     // um you're already running this test!
            63          :                     //  must be something wrong with it - pop it
            64        1 :                     var error = 'Skipping bad test: ' + test.url + ': we thought it was running!';
            65        1 :                     hub.emit(hub.LOG, hub.ERROR, error);
            66        1 :                     if (test.sendOutput) {
            67        1 :                         res.write(error);
            68          :                     }
            69        1 :                     cache.tests_to_run.splice(i, 1);
            70        1 :                     i--;
            71        1 :                     continue;
            72          :                 }
            73          : 
            74          :                 // Check if this is a Selenium test for this Selenium browser
            75          :                 //  if so then assign it to this browser
            76        3 :                 if (test.browser == req.session.seleniumUUID) {
            77          :                     // The Selenium host
            78        1 :                     test.browser = browser;
            79          :                 }
            80          : 
            81          :                 // This test already running in another browser
            82        3 :                 if (test.browser != browser) continue;
            83          : 
            84          :                 // Otherwise start running this test in capture mode!!
            85        2 :                 test.running = now;
            86        2 :                 testURL = test.url;
            87        2 :                 break;
            88          :             }
            89          : 
            90        6 :             if (testURL) {
            91        2 :                 res.end(JSON.stringify({ testLocation: testURL }));
            92        2 :                 hub.emit(hub.LOG, hub.INFO, "Sending test url: " + testURL);
            93          :             } else {
            94          :                 // find all local tests
            95        4 :                 var prefix           = hub.config.testDir,
            96          :                     webPrefix        = hub.config.testDirWeb,
            97          :                     local_test_files = hub.config.testRegex,
            98          :                     full_find        = path.join(prefix, '**', local_test_files),
            99          :                     matches          = glob.globSync(full_find),
           100          :                     data             = [];
           101        4 :                 ;
           102          : 
           103          :                 // No tests for me - end if we're a Selenium browser
           104        4 :                 if (req.session.seleniumUUID) {
           105          :                     // Selenium job all done!!
           106        1 :                     hub.emit('seleniumTestsFinished');
           107          :                 }
           108          : 
           109        4 :                 matches.forEach(function(testFile) {
           110        4 :                     testFile = testFile.replace(prefix, '');
           111        4 :                     data.push({ test_url: testFile });
           112          :                 });
           113          : 
           114        4 :                 res.end(JSON.stringify({ availableTests: data, config: hub.config }));
           115          :             }
           116          :         }
           117          :     }
           118          : };
           119          : 


      

 
Generated by: YUI Test