Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/320926

Change subject: build: Replace jscs+jshint with eslint
......................................................................

build: Replace jscs+jshint with eslint

Change-Id: Idc2bc95a2b7c5ae37864d5c351b9031337e29f46
---
A .eslintrc.json
D .jscsrc
D .jshintignore
D .jshintrc
M Gruntfile.js
M package.json
M src/EventEmitter.js
M src/Factory.js
M src/Registry.js
M src/core.js
M src/export.js
M src/util.js
M src/util/jquery.js
M tests/node-index.js
M tests/saucelabs.browsers.js
M tests/testrunner.js
M tests/unit/SortedEmitterList.test.js
M tests/unit/core.test.js
M tests/unit/util.test.js
19 files changed, 50 insertions(+), 62 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/oojs/core refs/changes/26/320926/1

diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..e1760c6
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,20 @@
+{
+    "extends": "wikimedia",
+
+    "ecmaVersion": 5,
+    "env": {
+        "browser": true,
+        "jquery": true,
+        "qunit": true
+    },
+    "globals": {
+        "oo": true,
+        "OO": false
+    },
+
+    "rules": {
+        "dot-notation": 0,
+        "valid-jsdoc": 0,
+        "wrap-iife": 0
+    }
+}
diff --git a/.jscsrc b/.jscsrc
deleted file mode 100644
index 9d22e3f..0000000
--- a/.jscsrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-       "preset": "wikimedia"
-}
diff --git a/.jshintignore b/.jshintignore
deleted file mode 100644
index 9aa34ea..0000000
--- a/.jshintignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/coverage
-/docs
-/lib
-node_modules
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index 7f73166..0000000
--- a/.jshintrc
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-       // Enforcing
-       "bitwise": true,
-       "eqeqeq": true,
-       "freeze": true,
-       "latedef": true,
-       "noarg": true,
-       "nonew": true,
-       "undef": true,
-       "unused": true,
-       "strict": false,
-
-       "globals": {
-               "oo": true,
-               "OO": false,
-               "QUnit": false
-       }
-}
diff --git a/Gruntfile.js b/Gruntfile.js
index 87d9dd9..4d57603 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -10,16 +10,15 @@
  * SAUCE_ACCESS_KEY from your bashrc and run 'grunt ci'. Sign up for free at 
https://saucelabs.com/signup/plan/free.
  */
 
-/*jshint node:true */
+/* eslint-env node */
 module.exports = function ( grunt ) {
        var sauceBrowsers = require( './tests/saucelabs.browsers.js' );
 
        grunt.loadNpmTasks( 'grunt-contrib-clean' );
        grunt.loadNpmTasks( 'grunt-contrib-concat' );
-       grunt.loadNpmTasks( 'grunt-contrib-jshint' );
        grunt.loadNpmTasks( 'grunt-contrib-uglify' );
        grunt.loadNpmTasks( 'grunt-contrib-watch' );
-       grunt.loadNpmTasks( 'grunt-jscs' );
+       grunt.loadNpmTasks( 'grunt-eslint' );
        grunt.loadNpmTasks( 'grunt-karma' );
 
        grunt.initConfig( {
@@ -65,19 +64,19 @@
                                ]
                        }
                },
-               jshint: {
-                       options: {
-                               jshintrc: true
+               eslint: {
+                       fix: {
+                               options: {
+                                       fix: true
+                               },
+                               src: [
+                                       '<%= eslint.dev %>'
+                               ]
                        },
                        dev: [
                                '*.js',
                                '{src,tests}/**/*.js'
-                       ],
-                       // Skipping the minimised distribution files
-                       dist: 'dist/**/oojs{.jquery,}.js'
-               },
-               jscs: {
-                       dev: '<%= jshint.dev %>'
+                       ]
                },
                uglify: {
                        options: {
@@ -152,8 +151,7 @@
                },
                watch: {
                        files: [
-                               '.{jscsrc,jshintignore,jshintrc}',
-                               '<%= jshint.dev %>'
+                               '<%= eslint.dev %>'
                        ],
                        tasks: '_test'
                }
@@ -174,7 +172,7 @@
        } );
 
        grunt.registerTask( 'build', [ 'clean', 'concat', 'uglify' ] );
-       grunt.registerTask( '_test', [ 'git-build', 'build', 'jshint', 'jscs', 
'karma:main', 'karma:jquery', 'karma:other' ] );
+       grunt.registerTask( '_test', [ 'git-build', 'build', 'eslint', 
'karma:main', 'karma:jquery', 'karma:other' ] );
        grunt.registerTask( 'ci', [ '_test', 'karma:ci' ] );
 
        if ( process.env.ZUUL_PIPELINE === 'gate-and-submit' ) {
diff --git a/package.json b/package.json
index f132a25..f3301ce 100644
--- a/package.json
+++ b/package.json
@@ -24,13 +24,13 @@
   },
   "dependencies": {},
   "devDependencies": {
+    "eslint-config-wikimedia": "0.2.0",
     "grunt": "1.0.1",
     "grunt-contrib-clean": "1.0.0",
     "grunt-contrib-concat": "1.0.1",
-    "grunt-contrib-jshint": "1.0.0",
     "grunt-contrib-uglify": "1.0.1",
     "grunt-contrib-watch": "1.0.0",
-    "grunt-jscs": "2.8.0",
+    "grunt-eslint": "19.0.0",
     "grunt-karma": "2.0.0",
     "jquery": "1.11.3",
     "karma": "1.1.1",
diff --git a/src/EventEmitter.js b/src/EventEmitter.js
index dbb337f..169f3a8 100644
--- a/src/EventEmitter.js
+++ b/src/EventEmitter.js
@@ -1,4 +1,4 @@
-/*global hasOwn */
+/* global hasOwn */
 
 ( function () {
 
diff --git a/src/Factory.js b/src/Factory.js
index bb78455..c0435c9 100644
--- a/src/Factory.js
+++ b/src/Factory.js
@@ -1,4 +1,4 @@
-/*global createObject */
+/* global createObject */
 
 /**
  * @class OO.Factory
diff --git a/src/Registry.js b/src/Registry.js
index 6378715..f27e501 100644
--- a/src/Registry.js
+++ b/src/Registry.js
@@ -1,4 +1,4 @@
-/*global hasOwn */
+/* global hasOwn */
 
 /**
  * @class OO.Registry
diff --git a/src/core.js b/src/core.js
index abae8ce..06f6669 100644
--- a/src/core.js
+++ b/src/core.js
@@ -1,4 +1,4 @@
-/*exported toString */
+/* exported toString */
 var
        /**
         * Namespace for all classes, static methods and static properties.
@@ -348,7 +348,7 @@
                right = arr.length;
        while ( left < right ) {
                // Equivalent to Math.floor( ( left + right ) / 2 ) but much 
faster
-               /*jshint bitwise:false */
+               // eslint-disable-next-line no-bitwise
                mid = ( left + right ) >> 1;
                cmpResult = searchFunc( arr[ mid ] );
                if ( cmpResult < 0 ) {
diff --git a/src/export.js b/src/export.js
index 0d12d1d..eb09102 100644
--- a/src/export.js
+++ b/src/export.js
@@ -1,4 +1,4 @@
-/*jshint node:true */
+/* eslint-env node */
 if ( typeof module !== 'undefined' && module.exports ) {
        module.exports = oo;
 } else {
diff --git a/src/util.js b/src/util.js
index 2783a8e..349436f 100644
--- a/src/util.js
+++ b/src/util.js
@@ -1,4 +1,4 @@
-/*global hasOwn, toString */
+/* global hasOwn, toString */
 
 /**
  * Assert whether a value is a plain object or not.
@@ -8,11 +8,10 @@
  * @return {boolean}
  */
 oo.isPlainObject = function ( obj ) {
-       /*jshint eqnull:true, eqeqeq:false */
-
        // Any object or value whose internal [[Class]] property is not 
"[object Object]"
        // Support IE8: Explicitly filter out DOM nodes
        // Support IE8: Explicitly filter out Window object (needs loose 
comparison)
+       // eslint-disable-next-line eqeqeq
        if ( !obj || toString.call( obj ) !== '[object Object]' || obj.nodeType 
|| ( obj != null && obj == obj.window ) ) {
                return false;
        }
diff --git a/src/util/jquery.js b/src/util/jquery.js
index 027ae11..b5337c2 100644
--- a/src/util/jquery.js
+++ b/src/util/jquery.js
@@ -1,3 +1,3 @@
-/*global $ */
+/* global $ */
 
 oo.isPlainObject = $.isPlainObject;
diff --git a/tests/node-index.js b/tests/node-index.js
index 2f90173..980a8f4 100644
--- a/tests/node-index.js
+++ b/tests/node-index.js
@@ -1,4 +1,4 @@
-/*jshint node:true */
+/* eslint-env node */
 var qunit = require( 'qunit' );
 
 qunit.setup( {
diff --git a/tests/saucelabs.browsers.js b/tests/saucelabs.browsers.js
index 96aa595..c10fab1 100644
--- a/tests/saucelabs.browsers.js
+++ b/tests/saucelabs.browsers.js
@@ -1,4 +1,4 @@
-/*jshint node:true */
+/* eslint-env node */
 
 /**
  * Cover a wide range of browsers with (ideally) no more than 9 browsers (3 
batches of 3).
diff --git a/tests/testrunner.js b/tests/testrunner.js
index 81b85d3..9845611 100644
--- a/tests/testrunner.js
+++ b/tests/testrunner.js
@@ -1,6 +1,4 @@
 ( function () {
-       /*jshint browser:true */
-
        // Extend QUnit.module to provide a fixture element. This used to be in 
tests/index.html, but
        // dynamic test runners like Karma build their own web page.
        ( function () {
@@ -42,7 +40,7 @@
                document.getElementById( 'qunit-fixture' ).appendChild( iframe 
);
 
                // Support IE8: Without "src", the contentWindow has no 
'Object' constructor.
-               /*jshint scripturl:true */
+               // eslint-disable-next-line no-script-url
                iframe.src = 'javascript:';
 
                // Support IE6: Iframe contentWindow is populated 
asynchronously.
diff --git a/tests/unit/SortedEmitterList.test.js 
b/tests/unit/SortedEmitterList.test.js
index a56a15c..d0587fb 100644
--- a/tests/unit/SortedEmitterList.test.js
+++ b/tests/unit/SortedEmitterList.test.js
@@ -90,7 +90,7 @@
                                        msg: 'Passing an item instead of an 
array to addItems'
                                },
                                {
-                                       items:  initialItems,
+                                       items: initialItems,
                                        newSortingCallback: function ( a, b ) {
                                                // Flip the sort
                                                return a.getContent() > 
b.getContent() ? -1 :
diff --git a/tests/unit/core.test.js b/tests/unit/core.test.js
index 603f5ec..f15b794 100644
--- a/tests/unit/core.test.js
+++ b/tests/unit/core.test.js
@@ -324,7 +324,6 @@
                                        }
                                }
                        };
-                       /*jshint loopfunc:true */
                        funcObj = function abc( d ) { return d; };
                        funcObj.foo = 3;
                        funcObj.bar = {
@@ -802,7 +801,6 @@
                        };
                        oo.compare.callCount = 0;
                        oo.compare( x, y );
-                       /**jshint bitwise: true */
                        assert.strictEqual(
                                oo.compare.callCount,
                                Math.pow( 2, depth + 1 ) - 2,
diff --git a/tests/unit/util.test.js b/tests/unit/util.test.js
index b6debf0..cb69324 100644
--- a/tests/unit/util.test.js
+++ b/tests/unit/util.test.js
@@ -20,8 +20,8 @@
                // Primitives
                assert.strictEqual( oo.isPlainObject( undefined ), false, 
'undefined' );
                assert.strictEqual( oo.isPlainObject( null ), false, 'null' );
-               assert.strictEqual( oo.isPlainObject( false ), false,  'boolean 
false' );
-               assert.strictEqual( oo.isPlainObject( true ), false,  'boolean 
true' );
+               assert.strictEqual( oo.isPlainObject( false ), false, 'boolean 
false' );
+               assert.strictEqual( oo.isPlainObject( true ), false, 'boolean 
true' );
                assert.strictEqual( oo.isPlainObject( 0 ), false, 'number 0' );
                assert.strictEqual( oo.isPlainObject( 42 ), false, 'positive 
number' );
                assert.strictEqual( oo.isPlainObject( -42 ), false, 'negative 
number' );

-- 
To view, visit https://gerrit.wikimedia.org/r/320926
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idc2bc95a2b7c5ae37864d5c351b9031337e29f46
Gerrit-PatchSet: 1
Gerrit-Project: oojs/core
Gerrit-Branch: master
Gerrit-Owner: Esanders <esand...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to