build: Use blacklist instead of whitelist for jshint/jscs/jsonlint

* jsonlint now includes docs/, includes/ (api and installer i18n),
  maintenance/, and tests/.
  539 files -> 864 files.
  - Continue to exclude JSDuck artefacts in docs/js/.
  - Continue to exclude vendor/.

* jshint now includes mw-config/ and maintenance/.
  177 files -> 179 files.

* jscs now includes everything jshint includes.
  172 files -> 179 files.
  - The -skip.js files no longer need excluding.

Use the native exclude syntax for jshint and jscs so that other
software and services with JSHint support use these as well.

Change-Id: Idebf30275f9c93483069367f923ed290c38e0b26
This commit is contained in:
Kunal Mehta 2015-07-09 20:33:09 -07:00 committed by Jforrester
parent bff168e6d9
commit face67cea4
6 changed files with 25 additions and 32 deletions

14
.jscsrc
View file

@ -3,5 +3,17 @@
"disallowQuotedKeysInObjects": null,
"requireSpacesInsideParentheses": null,
"requireSpacesInsideArrayBrackets": null
"requireSpacesInsideArrayBrackets": null,
"excludeFiles": [
"docs/**",
"extensions/**",
"node_modules/**",
"resources/lib/**",
"resources/src/jquery.tipsy/**",
"resources/src/jquery/jquery.farbtastic.js",
"resources/src/mediawiki.libs/**",
"skins/**",
"vendor/**"
]
}

View file

@ -8,4 +8,5 @@ resources/lib/**
resources/src/jquery.tipsy/**
resources/src/jquery/jquery.farbtastic.js
resources/src/mediawiki.libs/**
tests/frontend/node_modules/**
skins/**
vendor/**

View file

@ -19,34 +19,16 @@ module.exports = function ( grunt ) {
options: {
jshintrc: true
},
all: [
'*.js',
'{includes,languages,resources,tests}/**/*.js'
]
all: '.'
},
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;
}, [] ) )
all: '.'
},
jsonlint: {
all: [
'.jscsrc',
'{languages,maintenance,resources}/**/*.json',
'package.json'
'**/*.json',
'!{docs/js,extensions,node_modules,skins,vendor}/**'
]
},
banana: {
@ -56,10 +38,9 @@ module.exports = function ( grunt ) {
},
watch: {
files: [
'<%= jscs.all %>',
'<%= jsonlint.all %>',
'.jshintignore',
'.jshintrc'
'.js*',
'**/*',
'!{docs,extensions,node_modules,skins,vendor}/**'
],
tasks: 'test'
},

View file

@ -37,7 +37,6 @@
* @alternateClassName jqXHR
*/
/**
* @class QUnit
* @source <http://api.qunitjs.com/>

View file

@ -133,8 +133,7 @@ class GenerateJqueryMsgData extends Maintenance {
. "// languages, and parser modes. Intended for use by a unit test framework by looping\n"
. "// through the object and comparing its parser return value with the 'result' property.\n"
. '// Last generated with ' . basename( __FILE__ ) . ' at ' . gmdate( 'r' ) . "\n"
// This file will contain unquoted JSON strings as javascript native object literals,
// flip the quotemark convention for this file.
. "//jscs:disable\n"
. "\n"
. 'mediaWiki.libs.phpParserData = ' . FormatJson::encode( $phpParserData, true ) . ";\n";

View file

@ -1,7 +1,8 @@
// This file stores the output from the PHP parser for various messages, arguments,
// languages, and parser modes. Intended for use by a unit test framework by looping
// through the object and comparing its parser return value with the 'result' property.
// Last generated with generateJqueryMsgData.php at Thu, 30 Jan 2014 04:04:41 +0000
// Last generated with generateJqueryMsgData.php at Fri, 10 Jul 2015 11:44:08 +0000
//jscs:disable
mediaWiki.libs.phpParserData = {
"messages": {