123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- /*
- * grunt-execute
- * https://github.com/Bartvds/grunt-execute
- *
- * Copyright (c) 2013 Bart van der Schoor
- * Licensed under the MIT license.
- */
- 'use strict';
- /*jshint -W098 */
- module.exports = function (grunt) {
- // Project configuration.
- var help = require('./test/helper.js');
- var assert = require('assert');
- function getShellFail(name) {
- return {
- options: {
- callback: function (err, stdout, stderr, cb) {
- if (!err) {
- console.log('\nExpected error for test execute: '.red + 'execute:' + name + '\n');
- cb(new Error('expected task to fail'));
- return;
- }
- assert(/^Command failed: /.test(err.message), 'invalid error message: ' + err.message);
- cb();
- }
- },
- command: 'grunt execute:' + name
- };
- }
- grunt.initConfig({
- jshint: {
- all: [
- 'Gruntfile.js',
- 'tasks/*.js',
- '<%= nodeunit.tests %>'
- ],
- options: {
- jshintrc: '.jshintrc'
- }
- },
- // Before generating any new files, remove any previously-created files.
- clean: {
- tests: ['tmp', 'test/tmp']
- },
- // Configuration to be run (and then tested).
- execute: {
- error: {src: ['test/fixtures/error.js']},
- error_module: {
- options: {
- module: true
- },
- src: ['test/fixtures/error.js']},
- node_sync: {
- src: ['test/fixtures/**/node.sync.*js']
- },
- node_async: {
- src: ['test/fixtures/node.async.js']
- },
- node_args: {
- options: {
- args: ['foo', 'bar']
- },
- src: ['test/fixtures/**/node.args.*js']
- },
- node_exit: {
- // will crash
- src: ['test/fixtures/node.exit.one.js']
- },
- zero: {
- src: ['test/fixtures/nonexisting.js']
- },
- module_sync: {
- options: {
- module: true
- },
- src: ['test/fixtures/module.sync.js']
- },
- module_async: {
- options: {
- module: true
- },
- src: ['test/fixtures/module.async.js']
- },
- harmony_on: {
- options: {
- nodeargs: ['--harmony']
- },
- src: ['test/fixtures/node.harmony.js']
- },
- call_sync: {
- call: function (grunt, options, async) {
- var ctx = help.getContext('call.sync.gruntfile.js');
- grunt.file.write(ctx.dest, ctx.data);
- }
- },
- call_async: {
- call: function (grunt, options, async) {
- var ctx = help.getContext('call.async.gruntfile.js');
- // callback get, makes grunt-execute run async
- var done = async();
- var fs = require('fs');
- setTimeout(function () {
- fs.writeFile(ctx.dest, ctx.data, function (err) {
- // call callback, passing error will fail the task
- done(err);
- });
- }, 500);
- }
- },
- beforeAfter: {
- options: {
- before: function (grunt, options, async) {
- var ctx = help.getContext('before.options.sync.gruntfile.js');
- grunt.file.write(ctx.dest, ctx.data);
- },
- after: function (grunt, options, async) {
- var ctx = help.getContext('after.options.sync.gruntfile.js');
- grunt.file.write(ctx.dest, ctx.data);
- }
- },
- before: function (grunt, options, async) {
- var ctx = help.getContext('before.sync.gruntfile.js');
- grunt.file.write(ctx.dest, ctx.data);
- },
- after: function (grunt, options, async) {
- var ctx = help.getContext('after.sync.gruntfile.js');
- grunt.file.write(ctx.dest, ctx.data);
- },
- src: ['test/fixtures/node.async.js']
- }
- },
- shell: {
- options: {
- stdout: false,
- stderr: false,
- execOptions: {
- cwd: '.'
- }
- },
- node_exit: getShellFail('node_exit:'),
- error: getShellFail('error'),
- error_module: getShellFail('error_module')
- },
- // Unit tests.
- nodeunit: {
- tests: ['test/*_test.js']
- }
- });
- grunt.loadTasks('tasks');
- grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-contrib-clean');
- grunt.loadNpmTasks('grunt-contrib-nodeunit');
- grunt.loadNpmTasks('grunt-shell');
- grunt.registerTask('pass', [
- 'execute:node_args',
- 'execute:node_async',
- 'execute:node_sync',
- 'execute:harmony_on',
- 'execute:zero',
- 'execute:module_sync',
- 'execute:module_async',
- 'execute:call_sync',
- 'execute:call_async',
- 'execute:beforeAfter'
- ]);
- grunt.registerTask('fail', [
- 'shell:node_exit',
- 'shell:error',
- 'shell:error_module'
- ]);
- grunt.registerTask('test', ['jshint', 'clean', 'pass', 'fail', 'nodeunit']);
- grunt.registerTask('default', ['test']);
- grunt.registerTask('dev', ['error']);
- };
|