text-lcov.js 1.08 KB
Newer Older
lxyang committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
var LcovOnly = require('./lcovonly'),
  util = require('util');

/**
 * a `Report` implementation that produces an LCOV coverage and prints it
 *  to standard out.
 *
 * Usage
 * -----
 *
 *      var report = require('istanbul').Report.create('text-lcov');
 *
 * @class TextLcov
 * @module report
 * @extends LcovOnly
 * @constructor
 * @param {Object} opts optional
 * @param {String} [opts.log] the method used to log to console.
 */
function TextLcov(opts) {
    var that = this;

    LcovOnly.call(this);

    this.opts = opts || {};
    this.opts.log = this.opts.log || console.log;
    this.opts.writer = {
        println: function (ln) {
            that.opts.log(ln);
        }
    };
}

TextLcov.TYPE = 'text-lcov';
util.inherits(TextLcov, LcovOnly);

LcovOnly.super_.mix(TextLcov, {
    writeReport: function (collector) {
        var that = this,
            writer = this.opts.writer;

        collector.files().forEach(function (key) {
            that.writeFileCoverage(writer, collector.fileCoverageFor(key));
        });

        this.emit('done');
    }
});

module.exports = TextLcov;