jacob-meacham/grunt-lcov-merge

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# grunt-lcov-merge 
[![Build Status](https://travis-ci.org/jacob-meacham/grunt-lcov-merge.svg?branch=develop)](https://travis-ci.org/jacob-meacham/grunt-lcov-merge)
[![npm version](https://badge.fury.io/js/grunt-lcov-merge.svg)](http://badge.fury.io/js/grunt-lcov-merge)
[![Coverage Status](https://coveralls.io/repos/jacob-meacham/grunt-lcov-merge/badge.svg?branch=develop)](https://coveralls.io/r/jacob-meacham/grunt-lcov-merge?branch=develop)
[![Code Climate](https://codeclimate.com/github/jacob-meacham/grunt-lcov-merge/badges/gpa.svg)](https://codeclimate.com/github/jacob-meacham/grunt-lcov-merge)
[![Dependency Status](https://www.versioneye.com/user/projects/54cbfc3cde7924f81a0001e4/badge.svg?style=flat)](https://www.versioneye.com/user/projects/54cbfc3cde7924f81a0001e4)

> Grunt plugin to merge lcov files from multiple test runs, for use with a tool like [coveralls](coveralls.io).

## Getting Started
This plugin works with any grunt `>=0.4.0`

To install, add grunt-lcov-merge to your package.json. The easiest way to do that is

```shell
npm install grunt-lcov-merge --save-dev
```

Once the plugin has been installed, you'll need to enable it in your Gruntfile by adding

```js
grunt.loadNpmTasks('grunt-lcov-merge');
```

You can then run with
```shell
grunt lcovMerge
```

## Options
#### emitters
Type: `Array`
Default: `['file']`

What emitters to send the merged data to. Supported emitters are 'file', which sends the merged data to a file, and 'event', which sends it out to the 'coverage' event and can be listened to with 

```js
grunt.event.on('coverage', function(lcov, done) {});
```

#### outputFile
Type: `String`
Default `coverage/lcov-merge.info`

If a file emitter is specified, this is the output file to pipe data to.

### Example
```js
    grunt.initConfig({
    jshint: {
        src: ['Gruntfile.js', 'tasks/**/*.js', 'test/**/*.js'],
        options: {
            jshintrc: true
        }
    },
    
    mocha_istanbul: {
      coverage: {
          src: 'test/**/*.spec.js',
          options: {
              coverageFolder: 'build/coverage',
              reportFormats: ['lcov'],
          }
      }
    },

    lcovMerge: {
      options: {
          emitters: ['event', 'file'],
          outputFile: 'mergeLcov.info'
      },
      src: ['build/coverage/*.info', 'build/coverage/**/*.info']
    }
  });

  grunt.event.on('coverage', function(lcov, done) {
    // See below
    done();
  });

  grunt.loadNpmTasks('grunt-lcov-merge');
```

Note that grunt-lcov-merge allows for source files to be specified via any [file format](http://gruntjs.com/configuring-tasks#files).

## Event emitter
One of the most useful ways to consume this plugin is to use the coverage event to send the lcov data to a service like coveralls:

```js
grunt.event.on('coverage', function(lcov, done) {
    require('coveralls').handleInput(lcov, function(err) {
        if (err) {
          return done(err);
        }
        done();
    });
```

Using the coveralls module means that Travis-CI can automatically send your merged LCOV to coveralls.

## Version History
* 0.1.0 - Initial version
* 0.1.1 - Trim down the number of files in the distribution
* 0.1.2 - Update dependencies, work around coveralls issue.
* 0.1.3 - Documentation updates
* 1.0.0 - Official release
* 1.1.0 - Support Grunt >=1.0
* 1.2.0 - Update dependencies
* 1.2.1 - Fix incorrect npm version
* 1.2.2 - Fix issues with test code on travis
* 1.2.3 - ACTUALLY Fix issues with test code on travis (aren't immutable versions fun??)