module.exports = function (grunt) {
// configuration
grunt.initConfig({
jshint: {
options: {
jshintrc: '.jshintrc',
ignores: ['test/coverage/**/*.js']
},
files: {
src: ['index.js', 'server/**/*.js', 'test/**/*.js']
},
gruntfile: {
src: 'Gruntfile.js'
}
},
watch: {
lint: {
files: '<%= jshint.files.src %>',
tasks: 'jshint'
},
test: {
files: ['test/unit/*.js'],
tasks: ['jshint', 'mochaTest:unit']
}
},
nodemon: {
dev: {
script: 'index.js',
options: {
ext: 'js,json'
}
}
},
concurrent: {
target: {
tasks: ['nodemon', 'watch'],
options: {
logConcurrentOutput: true
}
}
},
mochaTest: {
unit: {
options: {
reporter: 'spec'
},
src: ['test/unit/*.js']
},
api: {
options: {
reporter: 'spec'
},
src: ['test/api/*.js']
}
},
// start - code coverage settings
env: {
coverage: {
APP_DIR_FOR_CODE_COVERAGE: 'test/coverage/instrument/'
}
},
clean: {
coverage: {
src: ['test/coverage/']
}
},
copy: {
views: {
expand: true,
flatten: true,
src: ['server/views/*'],
dest: 'test/coverage/instrument/server/views'
}
},
instrument: {
files: ['index.js', 'server/**/*.js'],
options: {
lazy: true,
basePath: 'test/coverage/instrument/'
}
},
storeCoverage: {
options: {
dir: 'test/coverage/reports'
}
},
makeReport: {
src: 'test/coverage/reports/**/*.json',
options: {
type: 'lcov',
dir: 'test/coverage/reports',
print: 'detail'
}
}
// end - code coverage settings
});
// plugins
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-mocha-test');
grunt.loadNpmTasks('grunt-nodemon');
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-istanbul');
grunt.loadNpmTasks('grunt-env');
// tasks
grunt.registerTask('server', ['concurrent:target']);
grunt.registerTask('default', ['jshint', 'server']);
grunt.registerTask('test', ['mochaTest:unit', 'mochaTest:api']);
grunt.registerTask('coverage', ['jshint', 'clean', 'copy:views', 'env:coverage',
'instrument', 'mochaTest:unit', 'mochaTest:api', 'storeCoverage', 'makeReport']);
};
Running "jshint:files" (jshint) task
>> 24 files lint free.
Running "jshint:gruntfile" (jshint) task
>> 1 file lint free.
Running "clean:coverage" (clean) task
>> 1 path cleaned.
Running "copy:views" (copy) task
Running "env:coverage" (env) task
Running "instrument" task
Instrumented 22 files (skipped 0 files)
Running "mochaTest:unit" (mochaTest) task
exampleDescription
#exampleFunction()
✓ description
1 passing (23ms)
Running "mochaTest:api" (mochaTest) task
POST /exampleRoute 200 43.019 ms - 1583
✓ description (71ms)
1 passing (73ms)
Running "storeCoverage" task
Fatal error: No coverage information was collected
I cannot see where the storeCoverage is failing. Any advice?