Gruntfile.js
2.44 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
* grunt-cafe-mocha
* https://github.com/jdavis/grunt-cafe-mocha
*
* Copyright (c) 2013 Josh Davis
* Licensed under the MIT license.
*/
'use strict';
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
// Clean up lib-cov/
clean: {
coverage: [
'lib-cov/',
'coverage.html',
'coverageTwo.html',
]
},
// Configuration for coverages
coverage: {
cover: {
files: { 'lib-cov/': 'lib/'},
}
},
// Configuration for grunt-cafe-mocha task
cafemocha: {
// Setting 'coverage' option to true, using defaults
coverageOne: {
src: 'test/*.js',
options: {
ui: 'bdd',
reporter: 'html-cov',
coverage: true,
require: [
'should',
],
},
},
// Setting 'coverage' option to an object, overriding defaults
coverageTwo: {
src: 'test/*.js',
options: {
ui: 'bdd',
reporter: 'html-cov',
coverage: {
output: 'coverageTwo.html',
env: 'ENHANCED_COVERAGE',
},
require: [
'should',
],
},
}
},
});
// These plugins provide necessary tasks.
grunt.loadTasks('../tasks');
grunt.loadNpmTasks('grunt-contrib-clean');
// By default, lint and run all tests.
grunt.registerTask('default', ['clean', 'coverage', 'cafemocha']);
// Credit to @Couto
// Source: https://github.com/Couto/johnnie/blob/dev/Gruntfile.js#L100-L117
grunt.registerMultiTask('coverage', 'Create code coverage', function () {
var spawn = require('child_process').spawn,
done = this.async(),
coverage = spawn('jscoverage', [this.files[0].src, this.files[0].dest]),
error;
coverage.stdout.on('data', function (data) {
console.log(data.toString());
});
coverage.stderr.on('data', function (data) {
error = new Error(data.toString());
});
coverage.on('close', function (code) { done(error); });
});
};