Fix KafkaHandlerTest hack to work with PHPUnit 6
[lhc/web/wiklou.git] / Gruntfile.js
1 /* eslint-env node */
2
3 module.exports = function ( grunt ) {
4
5 var wgServer = process.env.MW_SERVER,
6 wgScriptPath = process.env.MW_SCRIPT_PATH,
7 WebdriverIOconfigFile,
8 karmaProxy = {};
9
10 grunt.loadNpmTasks( 'grunt-banana-checker' );
11 grunt.loadNpmTasks( 'grunt-contrib-copy' );
12 grunt.loadNpmTasks( 'grunt-contrib-watch' );
13 grunt.loadNpmTasks( 'grunt-eslint' );
14 grunt.loadNpmTasks( 'grunt-jsonlint' );
15 grunt.loadNpmTasks( 'grunt-karma' );
16 grunt.loadNpmTasks( 'grunt-stylelint' );
17 grunt.loadNpmTasks( 'grunt-webdriver' );
18
19 karmaProxy[ wgScriptPath ] = {
20 target: wgServer + wgScriptPath,
21 changeOrigin: true
22 };
23
24 if ( process.env.JENKINS_HOME ) {
25 WebdriverIOconfigFile = './tests/selenium/wdio.conf.jenkins.js';
26 } else {
27 WebdriverIOconfigFile = './tests/selenium/wdio.conf.js';
28 }
29
30 grunt.initConfig( {
31 eslint: {
32 all: [
33 '**/*.js',
34 '!docs/**',
35 '!node_modules/**',
36 '!resources/lib/**',
37 '!resources/src/jquery.tipsy/**',
38 '!resources/src/jquery/jquery.farbtastic.js',
39 '!resources/src/mediawiki.libs/**',
40 // Third-party code of PHPUnit coverage report
41 '!tests/coverage/**',
42 '!vendor/**',
43 // Explicitly say "**/*.js" here in case of symlinks
44 '!extensions/**/*.js',
45 '!skins/**/*.js',
46 // Skip functions aren't even parseable
47 '!resources/src/mediawiki.hidpi-skip.js'
48 ]
49 },
50 jsonlint: {
51 all: [
52 '**/*.json',
53 '!{docs/js,extensions,node_modules,skins,vendor}/**'
54 ]
55 },
56 banana: {
57 options: {
58 disallowBlankTranslations: false
59 },
60 core: 'languages/i18n/',
61 api: 'includes/api/i18n/',
62 installer: 'includes/installer/i18n/'
63 },
64 stylelint: {
65 src: '{resources/src,mw-config}/**/*.{css,less}'
66 },
67 watch: {
68 files: [
69 '.{stylelintrc,eslintrc.json}',
70 '**/*',
71 '!{docs,extensions,node_modules,skins,vendor}/**'
72 ],
73 tasks: 'test'
74 },
75 karma: {
76 options: {
77 proxies: karmaProxy,
78 files: [ {
79 pattern: wgServer + wgScriptPath + '/index.php?title=Special:JavaScriptTest/qunit/export',
80 watched: false,
81 included: true,
82 served: false
83 } ],
84 logLevel: 'DEBUG',
85 frameworks: [ 'qunit' ],
86 reporters: [ 'mocha' ],
87 singleRun: true,
88 autoWatch: false,
89 // Some tests in extensions don't yield for more than the default 10s (T89075)
90 browserNoActivityTimeout: 60 * 1000,
91 // Karma requires Same-Origin (or CORS) by default since v1.1.1
92 // for better stacktraces. But we load the first request from wgServer
93 crossOriginAttribute: false
94 },
95 main: {
96 browsers: [ 'Chrome' ]
97 },
98 chromium: {
99 browsers: [ 'Chromium' ]
100 },
101 firefox: {
102 browsers: [ 'Firefox' ]
103 }
104 },
105 copy: {
106 jsduck: {
107 src: 'resources/**/*',
108 dest: 'docs/js/modules',
109 expand: true,
110 rename: function ( dest, src ) {
111 return require( 'path' ).join( dest, src.replace( 'resources/', '' ) );
112 }
113 }
114 },
115
116 // Configure WebdriverIO task
117 webdriver: {
118 test: {
119 configFile: WebdriverIOconfigFile
120 }
121 }
122
123 } );
124
125 grunt.registerTask( 'assert-mw-env', function () {
126 if ( !process.env.MW_SERVER ) {
127 grunt.log.error( 'Environment variable MW_SERVER must be set.\n' +
128 'Set this like $wgServer, e.g. "http://localhost"'
129 );
130 }
131 if ( !process.env.MW_SCRIPT_PATH ) {
132 grunt.log.error( 'Environment variable MW_SCRIPT_PATH must be set.\n' +
133 'Set this like $wgScriptPath, e.g. "/w"' );
134 }
135 return !!( process.env.MW_SERVER && process.env.MW_SCRIPT_PATH );
136 } );
137
138 grunt.registerTask( 'lint', [ 'eslint', 'banana', 'stylelint' ] );
139 grunt.registerTask( 'qunit', [ 'assert-mw-env', 'karma:main' ] );
140
141 grunt.registerTask( 'test', [ 'lint' ] );
142 grunt.registerTask( 'default', 'test' );
143 };