| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | /* * grunt * http://gruntjs.com/ * * Copyright (c) 2012 "Cowboy" Ben Alman * Licensed under the MIT license. * https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT */'use strict';module.exports = function(grunt) {  // Project configuration.  grunt.initConfig({    nodeunit: {      all: ['test/{grunt,tasks,util}/**/*.js']    },    jshint: {      gruntfile: ['Gruntfile.js'],      libs_n_tests: ['lib/**/*.js', '<%= nodeunit.all %>'],      subgrunt: ['<%= subgrunt.all %>'],      options: {        curly: true,        eqeqeq: true,        immed: true,        latedef: true,        newcap: true,        noarg: true,        sub: true,        undef: true,        unused: true,        boss: true,        eqnull: true,        node: true,        es5: true      }    },    watch: {      gruntfile: {        files: ['<%= jshint.gruntfile %>'],        tasks: ['jshint:gruntfile']      },      libs_n_tests: {        files: ['<%= jshint.libs_n_tests %>'],        tasks: ['jshint:libs_n_tests', 'nodeunit']      },      subgrunt: {        files: ['<%= subgrunt.all %>'],        tasks: ['jshint:subgrunt', 'subgrunt']      }    },    subgrunt: {      all: ['test/gruntfile/*.js']    },  });  // These plugins provide necessary tasks.  grunt.loadNpmTasks('grunt-contrib-jshint');  grunt.loadNpmTasks('grunt-contrib-nodeunit');  grunt.loadNpmTasks('grunt-contrib-watch');  // "npm test" runs these tasks  grunt.registerTask('test', ['jshint', 'nodeunit', 'subgrunt']);  // Default task.  grunt.registerTask('default', ['test']);  // Run sub-grunt files, because right now, testing tasks is a pain.  grunt.registerMultiTask('subgrunt', 'Run a sub-gruntfile.', function() {    var path = require('path');    grunt.util.async.forEachSeries(this.filesSrc, function(gruntfile, next) {      grunt.util.spawn({        grunt: true,        args: ['--gruntfile', path.resolve(gruntfile)],      }, function(error, result) {        if (error) {          grunt.log.error(result.stdout).writeln();          next(new Error('Error running sub-gruntfile "' + gruntfile + '".'));        } else {          grunt.verbose.ok(result.stdout);          next();        }      });    }, this.async());  });};
 |