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 serverTests = require('./Tests/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]
40 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-spec-runner') : usePhantom ? tasks.concat('karma:continuous') : tasks.concat('karma:sauceTask');
62 grunt.registerTask('default', compatBuild.concat('karma:continuous')); // local testing - compat build
63 grunt.registerTask('default:dev', compatBuild.concat('karma:dev')); // local dev testing - compat build
64 grunt.registerTask('nocompat', nocompatBuild.concat('karma:continuous')); // local testing - no compat build
65 grunt.registerTask('nocompat:dev', nocompatBuild.concat('karma:dev')); // local dev testing - no compat build
66 grunt.registerTask('server', serverBuild.concat('server-spec-runner')); // local testing - server build
67 grunt.registerTask('server-spec-runner', function(){ // Travis server specs
68 var done = this.async();
71 grunt.registerTask('default:travis', tasks); // Travis & Sauce Labs
72 grunt.registerTask('distBuild', [ // task to build and test /dist files
74 'clean:dist', 'packager:dist-all', 'packager:dist-nocompat', 'packager:dist-server', 'uglify',
75 // Test specs against dist files
76 'clean:specs', 'packager:specs', 'karma:compatFull', 'karma:compatUglyfied',
77 'clean:specs', 'packager:specs-nocompat', 'karma:nocompatFull', 'karma:nocompatUglified'