A grunt plugin to force other tasks to continue after failures
Inspired by and extended from this answer by explunit on StackOverflow
Install next to your project's Gruntfile.js with:
$ npm install grunt-continue
Here is a simple example gruntfile to show how you might force grunt to continue after failing tests if you have some cleanup that you need to perform afterward
module.exports = function(grunt) {
// Add the grunt-continue tasks
grunt.loadNpmTasks('grunt-continue');
// Other tasks and configuration
...
grunt.registerTask('default', [
'setup',
'continue:on',
// All tasks after this point will be run with the force
// option so that grunt will continue after failures
'test',
'continue:off',
// Tasks after this point will be run without the force
// option so that grunt exits if they fail
'cleanup'
]);
};
continue:off
does not turn off the continuing if --force
was specified at the command line.
If continue:on
is called muliple times continue:off
must be called that many times in order to stop continuing.
If continue:off
is called more times than continue:on
it will fail.
It is sometimes useful to check if there were any warnings issued by any tasks within continue:on
and continue:off
.
For example, you may run a test within the block and cleanup at the end. In this instance you want the overall build to fail after the cleanup.
To accommodate this add the following task at the end:
module.exports = function(grunt) {
// Add the grunt-continue tasks
grunt.loadNpmTasks('grunt-continue');
// Other tasks and configuration
...
grunt.registerTask('default', [
'setup',
'continue:on',
// All tasks after this point will be run with the force
// option so that grunt will continue after failures
'test',
'continue:off',
// Tasks after this point will be run without the force
// option so that grunt exits if they fail
'cleanup',
'continue:fail-on-warning'
]);
};
grun
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using:
$ npm test
To use the Vagrantfile you will also need to install the following vagrant plugins
$ vagrant plugin install vagrant-omnibus
$ vagrant plugin install vagrant-berkshelf
Copyright © 2013 Peter Halliday
Licensed under the MIT license.