Add Content-Length header to thumb.php redirects
[lhc/web/wiklou.git] / Gruntfile.js
1 /*jshint node:true */
2 module.exports = function ( grunt ) {
3 grunt.loadNpmTasks( 'grunt-contrib-copy' );
4 grunt.loadNpmTasks( 'grunt-contrib-jshint' );
5 grunt.loadNpmTasks( 'grunt-contrib-watch' );
6 grunt.loadNpmTasks( 'grunt-banana-checker' );
7 grunt.loadNpmTasks( 'grunt-jscs' );
8 grunt.loadNpmTasks( 'grunt-jsonlint' );
9 grunt.loadNpmTasks( 'grunt-karma' );
10
11 var wgServer = process.env.MW_SERVER,
12 wgScriptPath = process.env.MW_SCRIPT_PATH,
13 karmaProxy = {};
14
15 karmaProxy[wgScriptPath] = wgServer + wgScriptPath;
16
17 grunt.initConfig( {
18 jshint: {
19 options: {
20 jshintrc: true
21 },
22 all: '.'
23 },
24 jscs: {
25 all: '.'
26 },
27 jsonlint: {
28 all: [
29 '.jscsrc',
30 '**/*.json',
31 '!{docs/js,extensions,node_modules,skins,vendor}/**'
32 ]
33 },
34 banana: {
35 core: 'languages/i18n/',
36 api: 'includes/api/i18n/',
37 installer: 'includes/installer/i18n/'
38 },
39 watch: {
40 files: [
41 '.js*',
42 '**/*',
43 '!{docs,extensions,node_modules,skins,vendor}/**'
44 ],
45 tasks: 'test'
46 },
47 karma: {
48 options: {
49 proxies: karmaProxy,
50 files: [ {
51 pattern: wgServer + wgScriptPath + '/index.php?title=Special:JavaScriptTest/qunit/export',
52 watched: false,
53 included: true,
54 served: false
55 } ],
56 frameworks: [ 'qunit' ],
57 reporters: [ 'dots' ],
58 singleRun: true,
59 autoWatch: false,
60 // Some tests in extensions don't yield for more than the default 10s (T89075)
61 browserNoActivityTimeout: 60 * 1000
62 },
63 main: {
64 browsers: [ 'Chrome' ]
65 },
66 more: {
67 browsers: [ 'Chrome', 'Firefox' ]
68 }
69 },
70 copy: {
71 jsduck: {
72 src: 'resources/**/*',
73 dest: 'docs/js/modules',
74 expand: true,
75 rename: function ( dest, src ) {
76 return require( 'path' ).join( dest, src.replace( 'resources/', '' ) );
77 }
78 }
79 }
80 } );
81
82 grunt.registerTask( 'assert-mw-env', function () {
83 if ( !process.env.MW_SERVER ) {
84 grunt.log.error( 'Environment variable MW_SERVER must be set.\n' +
85 'Set this like $wgServer, e.g. "http://localhost"'
86 );
87 }
88 if ( !process.env.MW_SCRIPT_PATH ) {
89 grunt.log.error( 'Environment variable MW_SCRIPT_PATH must be set.\n' +
90 'Set this like $wgScriptPath, e.g. "/w"');
91 }
92 return !!( process.env.MW_SERVER && process.env.MW_SCRIPT_PATH );
93 } );
94
95 grunt.registerTask( 'lint', ['jshint', 'jscs', 'jsonlint', 'banana'] );
96 grunt.registerTask( 'qunit', [ 'assert-mw-env', 'karma:main' ] );
97
98 grunt.registerTask( 'test', ['lint'] );
99 grunt.registerTask( 'default', 'test' );
100 };