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