Tests: Replace Tests/Utilities/syn.js with syn package + karma plugin.
[mootools.git] / Gruntfile.js
blobb12976b3a49ab0d500941a455cd18a25f6b2a443
1 "use strict";
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');
14         grunt.initConfig({
15                 'connect': options.grunt,
16                 'packager': {
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
27                 },
28                 uglify: distTasks.uglify,
29                 'karma': {
30                         options: options.karma,
31                         continuous: {
32                                 browsers: ['PhantomJS']
33                         },
34                         sauceTask: {
35                                 browsers: [options.travis.browser]
36                         },
37                         dev: {
38                                 singleRun: false,
39                                 captureTimeout: 0,
40                                 browsers: ['PhantomJS']
41                         },
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
47                 },
49                 'clean': {
50                         dist: {src: 'dist/mootools-*.js'},
51                         specs: {src: 'mootools-*.js'}
52                 }
53         });
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();
69                 serverTests(done);
70         });
71         grunt.registerTask('default:travis', tasks);                                                            // Travis & Sauce Labs
72         grunt.registerTask('distBuild', [                                                                                       // task to build and test /dist files
73                 // Build 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'
78         ]);