3 module.exports = function(grunt) {
5 grunt.loadNpmTasks('grunt-contrib-uglify');
6 require('load-grunt-tasks')(grunt);
8 var fs = require('fs');
9 var usePhantom = process.env.TRAVIS_PULL_REQUEST != 'false' || process.env.BROWSER == 'phantomjs';
10 var distTasks = JSON.parse(fs.readFileSync('Tests/dist-tasks.json'));
11 var serverSpecsJasmine = require('./Tests/jasmine-server-tests');
12 var options = require('./Tests/gruntfile-options');
15 'connect': options.grunt,
17 options: {name: 'Core'},
18 'all':options.packager.all,
19 'nocompat':options.packager.nocompat,
20 'server':options.packager.server,
21 'specs':options.packager.specs,
22 'specs-nocompat':options.packager.specsNoCompat,
23 'specs-server':options.packager.specsServer,
24 'dist-all': distTasks.build.compat,
25 'dist-nocompat': distTasks.build.nocompat,
26 'dist-server': distTasks.build.server
28 uglify: distTasks.uglify,
30 options: options.karma,
32 browsers: ['PhantomJS']
35 browsers: [options.travis.browser]
39 browsers: ['PhantomJS'],
42 // Testers for dist build files
43 compatFull: distTasks.testTasks.compatFull,
44 compatUglyfied: distTasks.testTasks.compatUglyfied,
45 nocompatFull: distTasks.testTasks.nocompatFull,
46 nocompatUglified: distTasks.testTasks.nocompatUglified
50 dist: {src: 'dist/mootools-*.js'},
51 specs: {src: 'mootools-*.js'}
55 var compatBuild = ['clean:specs', 'packager:all', 'packager:specs'];
56 var nocompatBuild = ['clean:specs', 'packager:nocompat', 'packager:specs-nocompat'];
57 var serverBuild = ['clean:specs', 'packager:server', 'packager:specs-server'];
59 var tasks = options.travis.build == 'default' ? compatBuild : options.travis.build == 'server' ? serverBuild : nocompatBuild;
60 tasks = options.travis.build == 'server' ? tasks.concat('server-jasmine-runner') : usePhantom ? tasks.concat('karma:continuous') : tasks.concat('karma:sauceTask');
62 // to run only server specs and avoid running browser specs for in the different versions of node and iojs
63 if (options.travis.build && options.travis.build != 'server' && process.version.slice(1, 5) != '0.10') tasks = [];
65 grunt.registerTask('default', compatBuild.concat('karma:continuous')); // local testing - compat build
66 grunt.registerTask('nocompat', nocompatBuild.concat('karma:continuous')); // local testing - no compat build
67 grunt.registerTask('server', serverBuild.concat('server-jasmine-runner')); // local testing - server build
68 grunt.registerTask('server-jasmine-runner', function(){ // Travis server specs
69 var done = this.async();
70 serverSpecsJasmine(done);
72 grunt.registerTask('default:travis', tasks); // Travis & Sauce Labs
73 grunt.registerTask('distBuild', [ // task to build and test /dist files
75 'clean:dist', 'packager:dist-all', 'packager:dist-nocompat', 'packager:dist-server', 'uglify',
76 // Test specs against dist files
77 'clean:specs', 'packager:specs', 'karma:compatFull', 'karma:compatUglyfied',
78 'clean:specs', 'packager:specs-nocompat', 'karma:nocompatFull', 'karma:nocompatUglified'