API: Use message-per-value for apihelp-query+siteinfo-param-prop
[mediawiki.git] / Gruntfile.js
blobe1e5e4ab01721a898d113d37f1b48ceb6272067d
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' );
11         var wgServer = process.env.MW_SERVER,
12                 wgScriptPath = process.env.MW_SCRIPT_PATH,
13                 karmaProxy = {};
15         karmaProxy[wgScriptPath] = wgServer + wgScriptPath;
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         } );
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         } );
95         grunt.registerTask( 'lint', ['jshint', 'jscs', 'jsonlint', 'banana'] );
96         grunt.registerTask( 'qunit', [ 'assert-mw-env', 'karma:main' ] );
98         grunt.registerTask( 'test', ['lint'] );
99         grunt.registerTask( 'default', 'test' );