src/cm/media/js/lib/yui/yui_3.10.3/build/test-console/test-console.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('test-console', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
Provides a specialized log console widget that's pre-configured to display YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
Test output with no extra configuration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
@example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
    <div id="log" class="yui3-skin-sam"></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
    <script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    YUI().use('test-console', function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        // ... set up your test cases here ...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
        // Render the console inside the #log div, then run the tests.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
        new Y.Test.Console().render('#log');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
        Y.Test.Runner.run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
    </script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
@module test-console
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
@namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
@class Console
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
@extends Console
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
@constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
@param {Object} [config] Config attributes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    @param {Object} [config.filters] Category filter configuration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
@since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
function TestConsole() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    TestConsole.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
Y.namespace('Test').Console = Y.extend(TestConsole, Y.Console, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    initializer: function (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        this.on('entry', this._onEntry);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        this.plug(Y.Plugin.ConsoleFilters, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
            category: Y.merge({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
                info  : true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
                pass  : false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
                fail  : true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
                status: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
            }, (config && config.filters) || {}),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
            defaultVisibility: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
            source: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
                TestRunner: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        Y.Test.Runner.on('complete', Y.bind(this._parseCoverage, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    // -- Protected Coverage Parser ---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    * Scans the coverage data to determine if it's an Istanbul coverage object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    * @method _isIstanbul
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
    * @param {Object} json The coverage data to scan
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    * @return {Boolean} True if this is Istanbul Coverage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    _isIstanbul: function(json) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        var first = Y.Object.keys(json)[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
            ret = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        if (json[first].s !== undefined && json[first].fnMap !== undefined) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
            ret = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
        }   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        if (json.s !== undefined && json.fnMap !== undefined) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
            ret = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        }   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        return ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    * Parses and logs a summary of YUITest coverage data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    * @method parseYUITest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    * @param {Object} coverage The YUITest Coverage JSON data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    parseYUITestCoverage: function (coverage) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
        var cov = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
            lines: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
                hit: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
                miss: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
                total: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
                percent: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
            functions: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
                hit: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
                miss: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
                total: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
                percent: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
        }, coverageLog;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
        Y.Object.each(coverage, function(info) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
            cov.lines.total += info.coveredLines;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
            cov.lines.hit += info.calledLines;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
            cov.lines.miss += (info.coveredLines - info.calledLines);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
            cov.lines.percent = Math.floor((cov.lines.hit / cov.lines.total) * 100);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
            cov.functions.total += info.coveredFunctions;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
            cov.functions.hit += info.calledFunctions;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            cov.functions.miss += (info.coveredFunctions - info.calledFunctions);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            cov.functions.percent = Math.floor((cov.functions.hit / cov.functions.total) * 100);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        coverageLog = 'Lines: Hit:' + cov.lines.hit + ' Missed:' + cov.lines.miss + ' Total:' + cov.lines.total + ' Percent:' + cov.lines.percent + '%\n';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        coverageLog += 'Functions: Hit:' + cov.functions.hit + ' Missed:' + cov.functions.miss + ' Total:' + cov.functions.total + ' Percent:' + cov.functions.percent + '%';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
        this.log('Coverage: ' + coverageLog, 'info', 'TestRunner');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    * Generates a generic summary object used for Istanbul conversions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    * @method _blankSummary
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    * @return {Object} Generic summary object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
    _blankSummary: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            lines: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
                total: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
                covered: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
                pct: 'Unknown'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
            statements: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
                total: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
                covered: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
                pct: 'Unknown'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
            functions: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
                total: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
                covered: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
                pct: 'Unknown'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
            branches: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
                total: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
                covered: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
                pct: 'Unknown'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    * Calculates line numbers from statement coverage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    * @method _addDerivedInfoForFile
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    * @param {Object} fileCoverage JSON coverage data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    _addDerivedInfoForFile: function (fileCoverage) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
        var statementMap = fileCoverage.statementMap,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
            statements = fileCoverage.s,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
            lineMap;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        if (!fileCoverage.l) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
            fileCoverage.l = lineMap = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            Y.Object.each(statements, function (value, st) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
                var line = statementMap[st].start.line,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
                    count = statements[st],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
                    prevVal = lineMap[line];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
                if (typeof prevVal === 'undefined' || prevVal < count) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
                    lineMap[line] = count;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
    * Generic percent calculator
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
    * @method _percent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    * @param {Number} covered The covered amount
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
    * @param {Number} total The total
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
    _percent: function (covered, total) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        var tmp, pct = 100.00;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        if (total > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
            tmp = 1000 * 100 * covered / total + 5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
            pct = Math.floor(tmp / 10) / 100;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        return pct;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
    * Summarize simple properties in the coverage data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    * @method _computSimpleTotals
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    * @param {Object} fileCoverage JSON coverage data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    * @param {String} property The property to summarize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    _computeSimpleTotals: function (fileCoverage, property) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        var stats = fileCoverage[property],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
            ret = { total: 0, covered: 0 };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
        Y.Object.each(stats, function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            ret.total += 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
            if (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
                ret.covered += 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
            }   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
        }); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
        ret.pct = this._percent(ret.covered, ret.total);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        return ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
    * Noramlizes branch data from Istanbul
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
    * @method _computeBranchTotals
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    * @param {Object} fileCoverage JSON coverage data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    _computeBranchTotals: function (fileCoverage) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        var stats = fileCoverage.b,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
            ret = { total: 0, covered: 0 };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        Y.Object.each(stats, function (branches) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            var covered = Y.Array.filter(branches, function (num) { return num > 0; }); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            ret.total += branches.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
            ret.covered += covered.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
        }); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
        ret.pct = this._percent(ret.covered, ret.total);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
        return ret;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    * Takes an Istanbul coverage object, normalizes it and prints a log with a summary
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    * @method parseInstanbul
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
    * @param {Object} coverage The coverage object to normalize and log
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
    parseIstanbul: function (coverage) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
        var self = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
            str = 'Coverage Report:\n';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
        Y.Object.each(coverage, function(fileCoverage, file) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            var ret = self._blankSummary();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            self._addDerivedInfoForFile(fileCoverage);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            ret.lines = self._computeSimpleTotals(fileCoverage, 'l');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            ret.functions = self._computeSimpleTotals(fileCoverage, 'f');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            ret.statements = self._computeSimpleTotals(fileCoverage, 's');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            ret.branches = self._computeBranchTotals(fileCoverage);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
            str += file + ':\n';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
            Y.Array.each(['lines','functions','statements','branches'], function(key) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
                str += '    ' + key +': ' + ret[key].covered + '/' + ret[key].total + ' : ' + ret[key].pct + '%\n';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
        this.log(str, 'info', 'TestRunner');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
    * Parses YUITest or Istanbul coverage results if they are available and logs them.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    * @method _parseCoverage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
    _parseCoverage: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        var coverage = Y.Test.Runner.getCoverage();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        if (!coverage) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        if (this._isIstanbul(coverage)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
            this.parseIstanbul(coverage);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            this.parseYUITestCoverage(coverage);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
    // -- Protected Event Handlers ---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
    _onEntry: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        var msg = e.message;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        if (msg.category === 'info'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
                && /\s(?:case|suite)\s|yuitests\d+|began/.test(msg.message)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
            msg.category = 'status';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
        } else if (msg.category === 'fail') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
            this.printBuffer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
}, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    NAME: 'testConsole',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
        entryTemplate: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            value:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
                '<div class="{entry_class} {cat_class} {src_class}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                    '<div class="{entry_content_class}">{message}</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
                '</div>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
        height: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
            value: '350px'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
        newestOnTop: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
        style: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
            value: 'block'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        width: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
            value: Y.UA.ie && Y.UA.ie < 9 ? '100%' : 'inherit'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
}, '3.10.3', {"requires": ["console-filters", "test", "array-extras"], "skinnable": true});