2013-10-18 14:55:48 +08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
module.exports = function (grunt) {
|
|
|
|
// load all grunt tasks
|
|
|
|
require('matchdep').filterDev('grunt-*').forEach(function(contrib) {
|
|
|
|
grunt.log.ok([contrib + " is loaded"]);
|
|
|
|
grunt.loadNpmTasks(contrib);
|
|
|
|
});
|
|
|
|
|
|
|
|
var config = {
|
|
|
|
dist: 'dist',
|
|
|
|
src: 'src',
|
|
|
|
distTest: 'test/dist',
|
|
|
|
srcTest: 'test/src'
|
|
|
|
};
|
|
|
|
|
|
|
|
// Project configuration.
|
|
|
|
grunt.initConfig({
|
|
|
|
config: config,
|
|
|
|
clean: {
|
|
|
|
dist: {
|
|
|
|
files: [
|
|
|
|
{
|
|
|
|
dot: true,
|
|
|
|
src: [
|
|
|
|
'<%= config.dist %>/*',
|
|
|
|
'<%= config.distTest %>/*',
|
|
|
|
'!<%= config.dist %>/.git*'
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
},
|
|
|
|
coffee: {
|
|
|
|
dist: {
|
|
|
|
files: [{
|
|
|
|
expand: true,
|
|
|
|
cwd: '<%= config.src %>',
|
|
|
|
src: '{,*/}*.coffee',
|
|
|
|
dest: '<%= config.dist %>',
|
|
|
|
ext: '.js'
|
|
|
|
}]
|
|
|
|
},
|
|
|
|
test: {
|
|
|
|
files: [{
|
|
|
|
expand: true,
|
|
|
|
cwd: '<%= config.srcTest %>',
|
|
|
|
src: '{,*/}*.spec.coffee',
|
|
|
|
dest: '<%= config.distTest %>',
|
|
|
|
ext: '.spec.js'
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
jshint: {
|
|
|
|
options: {
|
|
|
|
jshintrc: '.jshintrc'
|
|
|
|
},
|
|
|
|
gruntfile: {
|
|
|
|
src: 'Gruntfile.js'
|
|
|
|
},
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
gruntfile: {
|
|
|
|
files: '<%= jshint.gruntfile.src %>',
|
|
|
|
tasks: ['jshint:gruntfile']
|
|
|
|
},
|
|
|
|
dist: {
|
|
|
|
files: '<%= config.src %>/*',
|
|
|
|
tasks: ['coffee:dist', 'simplemocha:backend']
|
|
|
|
},
|
|
|
|
test: {
|
|
|
|
files: '<%= config.srcTest %>/specs/*',
|
|
|
|
tasks: ['coffee:test', 'simplemocha:backend']
|
|
|
|
}
|
|
|
|
},
|
|
|
|
simplemocha: {
|
|
|
|
options: {
|
|
|
|
globals: [
|
|
|
|
'sinon',
|
|
|
|
'chai',
|
|
|
|
'should',
|
|
|
|
'expect',
|
|
|
|
'assert',
|
|
|
|
'AssertionError',
|
|
|
|
],
|
|
|
|
timeout: 3000,
|
|
|
|
ignoreLeaks: false,
|
|
|
|
// grep: '*.spec',
|
|
|
|
ui: 'bdd',
|
|
|
|
reporter: 'spec'
|
|
|
|
},
|
|
|
|
backend: {
|
|
|
|
src: [
|
|
|
|
// add chai and sinon globally
|
|
|
|
'test/support/globals.js',
|
|
|
|
|
|
|
|
// tests
|
|
|
|
'test/dist/**/*.spec.js',
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
grunt.registerTask('coverageBackend', 'Test backend files as well as code coverage.', function () {
|
|
|
|
var done = this.async();
|
|
|
|
|
|
|
|
var path = './test/support/runner.js';
|
|
|
|
|
|
|
|
var options = {
|
|
|
|
cmd: 'istanbul',
|
|
|
|
grunt: false,
|
|
|
|
args: [
|
|
|
|
'cover',
|
|
|
|
'--default-excludes',
|
|
|
|
'-x', 'app/**',
|
|
|
|
'--report', 'lcov',
|
|
|
|
'--dir', './coverage/backend',
|
|
|
|
path
|
|
|
|
],
|
|
|
|
opts: {
|
|
|
|
// preserve colors for stdout in terminal
|
|
|
|
stdio: 'inherit',
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
function doneFunction(error, result) {
|
|
|
|
if (result && result.stderr) {
|
|
|
|
process.stderr.write(result.stderr);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (result && result.stdout) {
|
|
|
|
grunt.log.writeln(result.stdout);
|
|
|
|
}
|
|
|
|
|
|
|
|
// abort tasks in queue if there's an error
|
|
|
|
done(error);
|
|
|
|
}
|
|
|
|
|
|
|
|
grunt.util.spawn(options, doneFunction);
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// Default task.
|
|
|
|
grunt.registerTask('default', ['coffee', 'jshint']);
|
|
|
|
|
|
|
|
grunt.registerTask('test', [
|
|
|
|
'clean',
|
|
|
|
'coffee',
|
|
|
|
'simplemocha:backend',
|
|
|
|
]);
|
|
|
|
|
|
|
|
grunt.registerTask('coverage', [
|
|
|
|
'clean',
|
|
|
|
'coffee',
|
|
|
|
'coverageBackend'
|
2013-10-18 15:06:10 +08:00
|
|
|
]);
|
2013-10-18 14:55:48 +08:00
|
|
|
};
|