--- /dev/null
+/*jshint node:true */
+module.exports = function ( grunt ) {
+ grunt.loadNpmTasks( 'grunt-contrib-jshint' );
+ grunt.loadNpmTasks( 'grunt-contrib-watch' );
+ grunt.loadNpmTasks( 'grunt-banana-checker' );
+ grunt.loadNpmTasks( 'grunt-jscs' );
+ grunt.loadNpmTasks( 'grunt-jsonlint' );
+ grunt.loadNpmTasks( 'grunt-karma' );
+
+ var wgServer = process.env.MW_SERVER,
+ wgScriptPath = process.env.MW_SCRIPT_PATH;
+
+ grunt.initConfig( {
+ pkg: grunt.file.readJSON( 'package.json' ),
+ jshint: {
+ options: {
+ jshintrc: true
+ },
+ all: [
+ '*.js',
+ '{includes,languages,resources,skins,tests}/**/*.js'
+ ]
+ },
+ jscs: {
+ all: [
+ '<%= jshint.all %>',
+ // Auto-generated file with JSON (double quotes)
+ '!tests/qunit/data/mediawiki.jqueryMsg.data.js',
+ // Skip functions are stored as script files but wrapped in a function when
+ // executed. node-jscs trips on the would-be "Illegal return statement".
+ '!resources/src/*-skip.js'
+
+ // Exclude all files ignored by jshint
+ ].concat( grunt.file.read( '.jshintignore' ).split( '\n' ).reduce( function ( patterns, pattern ) {
+ // Filter out empty lines
+ if ( pattern.length && pattern[0] !== '#' ) {
+ patterns.push( '!' + pattern );
+ }
+ return patterns;
+ }, [] ) )
+ },
+ jsonlint: {
+ all: [
+ '.jscsrc',
+ '{languages,maintenance,resources}/**/*.json',
+ 'package.json'
+ ]
+ },
+ banana: {
+ core: 'languages/i18n/',
+ api: 'includes/api/i18n/',
+ installer: 'includes/installer/i18n/'
+ },
+ watch: {
+ files: [
+ '<%= jscs.all %>',
+ '<%= jsonlint.all %>',
+ '.jshintignore',
+ '.jshintrc'
+ ],
+ tasks: 'test'
+ },
+ karma: {
+ options: {
+ proxies: ( function () {
+ var obj = {};
+ // Set up a proxy for requests to relative urls inside wgScriptPath. Uses a
+ // property accessor instead of plain obj[wgScriptPath] assignment as throw if
+ // unset. Running grunt normally (e.g. npm test), should not fail over this.
+ // This ensures 'npm test' works out of the box, statically, on a git clone
+ // without MediaWiki fully installed or some environment variables set.
+ Object.defineProperty( obj, wgScriptPath, {
+ enumerable: true,
+ get: function () {
+ if ( !wgServer ) {
+ grunt.fail.fatal( 'MW_SERVER is not set' );
+ }
+ if ( !wgScriptPath ) {
+ grunt.fail.fatal( 'MW_SCRIPT_PATH is not set' );
+ }
+ return wgServer + wgScriptPath;
+ }
+ } );
+ return obj;
+ }() ),
+ files: [ {
+ pattern: wgServer + wgScriptPath + '/index.php?title=Special:JavaScriptTest/qunit/export',
+ watched: false,
+ included: true,
+ served: false
+ } ],
+ frameworks: [ 'qunit' ],
+ reporters: [ 'dots' ],
+ singleRun: true,
+ autoWatch: false
+ },
+ main: {
+ browsers: [ 'Chrome' ]
+ },
+ more: {
+ browsers: [ 'Chrome', 'Firefox' ]
+ }
+ }
+ } );
+
+ grunt.registerTask( 'lint', ['jshint', 'jscs', 'jsonlint', 'banana'] );
+ grunt.registerTask( 'qunit', 'karma:main' );
+
+ grunt.registerTask( 'test', ['lint'] );
+ grunt.registerTask( 'default', 'test' );
+};
--- /dev/null
+{
+ "name": "mediawiki",
+ "version": "0.0.0",
+ "scripts": {
+ "test": "grunt test"
+ },
+ "devDependencies": {
+ "grunt": "0.4.2",
+ "grunt-banana-checker": "0.2.0",
+ "grunt-contrib-jshint": "0.10.0",
+ "grunt-contrib-watch": "0.6.1",
+ "grunt-jscs": "0.8.1",
+ "grunt-jsonlint": "1.0.4",
+ "grunt-karma": "0.9.0",
+ "karma": "0.12.28",
+ "karma-chrome-launcher": "0.1.7",
+ "karma-firefox-launcher": "0.1.3",
+ "karma-qunit": "0.1.4",
+ "qunitjs": "1.15.0"
+ }
+}
+++ /dev/null
-/*!
- * Grunt file
- */
-
-/*jshint node:true */
-module.exports = function ( grunt ) {
- grunt.loadNpmTasks( 'grunt-contrib-jshint' );
- grunt.loadNpmTasks( 'grunt-contrib-watch' );
- grunt.loadNpmTasks( 'grunt-banana-checker' );
- grunt.loadNpmTasks( 'grunt-jscs' );
- grunt.loadNpmTasks( 'grunt-jsonlint' );
- grunt.loadNpmTasks( 'grunt-karma' );
-
- grunt.file.setBase( __dirname + '/../..' );
-
- var wgServer = process.env.MW_SERVER,
- wgScriptPath = process.env.MW_SCRIPT_PATH;
-
- grunt.initConfig( {
- pkg: grunt.file.readJSON( __dirname + '/package.json' ),
- jshint: {
- options: {
- jshintrc: true
- },
- all: [
- '*.js',
- '{includes,languages,resources,skins,tests}/**/*.js'
- ]
- },
- jscs: {
- all: [
- '<%= jshint.all %>',
- // Auto-generated file with JSON (double quotes)
- '!tests/qunit/data/mediawiki.jqueryMsg.data.js',
- // Skip functions are stored as script files but wrapped in a function when
- // executed. node-jscs trips on the would-be "Illegal return statement".
- '!resources/src/*-skip.js'
-
- // Exclude all files ignored by jshint
- ].concat( grunt.file.read( '.jshintignore' ).split( '\n' ).reduce( function ( patterns, pattern ) {
- // Filter out empty lines
- if ( pattern.length && pattern[0] !== '#' ) {
- patterns.push( '!' + pattern );
- }
- return patterns;
- }, [] ) )
- },
- jsonlint: {
- all: [
- '.jscsrc',
- '{languages,maintenance,resources}/**/*.json',
- 'tests/frontend/package.json'
- ]
- },
- banana: {
- core: 'languages/i18n/',
- api: 'includes/api/i18n/',
- installer: 'includes/installer/i18n/'
- },
- watch: {
- files: [
- '<%= jscs.all %>',
- '<%= jsonlint.all %>',
- '.jshintignore',
- '.jshintrc'
- ],
- tasks: 'test'
- },
- karma: {
- options: {
- proxies: ( function () {
- var obj = {};
- // Set up a proxy for requests to relative urls inside wgScriptPath. Uses a
- // property accessor instead of plain obj[wgScriptPath] assignment as throw if
- // unset. Running grunt normally (e.g. npm test), should not fail over this.
- // This ensures 'npm test' works out of the box, statically, on a git clone
- // without MediaWiki fully installed or some environment variables set.
- Object.defineProperty( obj, wgScriptPath, {
- enumerable: true,
- get: function () {
- if ( !wgServer ) {
- grunt.fail.fatal( 'MW_SERVER is not set' );
- }
- if ( !wgScriptPath ) {
- grunt.fail.fatal( 'MW_SCRIPT_PATH is not set' );
- }
- return wgServer + wgScriptPath;
- }
- } );
- return obj;
- }() ),
- files: [ {
- pattern: wgServer + wgScriptPath + '/index.php?title=Special:JavaScriptTest/qunit/export',
- watched: false,
- included: true,
- served: false
- } ],
- frameworks: [ 'qunit' ],
- reporters: [ 'dots' ],
- singleRun: true,
- autoWatch: false
- },
- main: {
- browsers: [ 'Chrome' ]
- },
- more: {
- browsers: [ 'Chrome', 'Firefox' ]
- }
- }
- } );
-
- grunt.registerTask( 'lint', ['jshint', 'jscs', 'jsonlint', 'banana'] );
- grunt.registerTask( 'qunit', 'karma:main' );
-
- grunt.registerTask( 'test', ['lint'] );
- grunt.registerTask( 'default', 'test' );
-};
+++ /dev/null
-{
- "name": "mediawiki",
- "version": "0.0.0",
- "scripts": {
- "test": "grunt test"
- },
- "devDependencies": {
- "grunt": "0.4.2",
- "grunt-banana-checker": "0.2.0",
- "grunt-contrib-jshint": "0.10.0",
- "grunt-contrib-watch": "0.6.1",
- "grunt-jscs": "0.8.1",
- "grunt-jsonlint": "1.0.4",
- "grunt-karma": "0.9.0",
- "karma": "0.12.28",
- "karma-chrome-launcher": "0.1.7",
- "karma-firefox-launcher": "0.1.3",
- "karma-qunit": "0.1.4",
- "qunitjs": "1.15.0"
- }
-}