diff --git a/.eslintignore b/.eslintignore index 46a631963a4aa7..da42fb9d77a38d 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,3 +3,4 @@ test/addons/doc-*/ test/fixtures test/**/node_modules test/parallel/test-fs-non-number-arguments-throw.js +test/disabled diff --git a/.eslintrc b/.eslintrc index 0c43234c59411e..7b2b1512398d2b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -39,14 +39,9 @@ rules: # Stylistic Issues # list: https://github.com/eslint/eslint/tree/master/docs/rules#stylistic-issues ## use single quote, we can use double quote when escape chars - quotes: - - 2 - - "single" - - "avoid-escape" + quotes: [2, "single", "avoid-escape"] ## 2 space indentation - indent: - - 2 - - 2 + indent: [2, 2] ## add space after comma ## set to 'warn' because of https://github.com/eslint/eslint/issues/2408 comma-spacing: 1 @@ -63,35 +58,40 @@ rules: ## require parens for Constructor new-parens: 2 ## max 80 length - max-len: - - 2 - - 80 - - 2 + max-len: [2, 80, 2] # Strict Mode # list: https://github.com/eslint/eslint/tree/master/docs/rules#strict-mode ## 'use strict' on top - strict: - - 2 - - "global" + strict: [2, "global"] + + # Variables + # list: https://github.com/eslint/eslint/tree/master/docs/rules#variables + ## disallow use of undefined variables (globals) + no-undef: 2 + + # Custom rules in tools/eslint-rules + require-buffer: 2 # Global scoped method and vars globals: - DTRACE_HTTP_CLIENT_REQUEST: true - LTTNG_HTTP_CLIENT_REQUEST: true - COUNTER_HTTP_CLIENT_REQUEST: true - DTRACE_HTTP_CLIENT_RESPONSE: true - LTTNG_HTTP_CLIENT_RESPONSE: true - COUNTER_HTTP_CLIENT_RESPONSE: true - DTRACE_HTTP_SERVER_REQUEST: true - LTTNG_HTTP_SERVER_REQUEST: true - COUNTER_HTTP_SERVER_REQUEST: true - DTRACE_HTTP_SERVER_RESPONSE: true - LTTNG_HTTP_SERVER_RESPONSE: true - COUNTER_HTTP_SERVER_RESPONSE: true - DTRACE_NET_STREAM_END: true - LTTNG_NET_STREAM_END: true - COUNTER_NET_SERVER_CONNECTION_CLOSE: true - DTRACE_NET_SERVER_CONNECTION: true - LTTNG_NET_SERVER_CONNECTION: true - COUNTER_NET_SERVER_CONNECTION: true + DTRACE_HTTP_CLIENT_REQUEST : false + LTTNG_HTTP_CLIENT_REQUEST : false + COUNTER_HTTP_CLIENT_REQUEST : false + DTRACE_HTTP_CLIENT_RESPONSE : false + LTTNG_HTTP_CLIENT_RESPONSE : false + COUNTER_HTTP_CLIENT_RESPONSE : false + DTRACE_HTTP_SERVER_REQUEST : false + LTTNG_HTTP_SERVER_REQUEST : false + COUNTER_HTTP_SERVER_REQUEST : false + DTRACE_HTTP_SERVER_RESPONSE : false + LTTNG_HTTP_SERVER_RESPONSE : false + COUNTER_HTTP_SERVER_RESPONSE : false + DTRACE_NET_STREAM_END : false + LTTNG_NET_STREAM_END : false + COUNTER_NET_SERVER_CONNECTION_CLOSE : false + DTRACE_NET_SERVER_CONNECTION : false + LTTNG_NET_SERVER_CONNECTION : false + COUNTER_NET_SERVER_CONNECTION : false + escape : false + unescape : false diff --git a/Makefile b/Makefile index 94f130f5fb3287..adebf50a0f2acb 100644 --- a/Makefile +++ b/Makefile @@ -375,7 +375,7 @@ bench-idle: ./$(NODE_EXE) benchmark/idle_clients.js & jslint: - ./$(NODE_EXE) tools/eslint/bin/eslint.js src lib test --reset --quiet + ./$(NODE_EXE) tools/eslint/bin/eslint.js src lib test --rulesdir tools/eslint-rules --reset --quiet CPPLINT_EXCLUDE ?= CPPLINT_EXCLUDE += src/node_lttng.cc diff --git a/lib/_debugger.js b/lib/_debugger.js index 83086ffb59e91f..831cc08cd6a8a5 100644 --- a/lib/_debugger.js +++ b/lib/_debugger.js @@ -9,6 +9,7 @@ const repl = Module.requireRepl(); const inherits = util.inherits; const assert = require('assert'); const spawn = require('child_process').spawn; +const Buffer = require('buffer').Buffer; exports.start = function(argv, stdin, stdout) { argv || (argv = process.argv.slice(2)); diff --git a/lib/_http_client.js b/lib/_http_client.js index f8239feb071320..a7d714f7e0b0b2 100644 --- a/lib/_http_client.js +++ b/lib/_http_client.js @@ -13,6 +13,7 @@ const freeParser = common.freeParser; const debug = common.debug; const OutgoingMessage = require('_http_outgoing').OutgoingMessage; const Agent = require('_http_agent'); +const Buffer = require('buffer').Buffer; function ClientRequest(options, cb) { diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js index 952b2ed082644a..b513852110ea76 100644 --- a/lib/_http_outgoing.js +++ b/lib/_http_outgoing.js @@ -4,6 +4,7 @@ const assert = require('assert').ok; const Stream = require('stream'); const timers = require('timers'); const util = require('util'); +const Buffer = require('buffer').Buffer; const common = require('_http_common'); const CRLF = common.CRLF; diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js index bebbc80e2bf8dc..709a44587989a3 100644 --- a/lib/_stream_readable.js +++ b/lib/_stream_readable.js @@ -5,6 +5,7 @@ Readable.ReadableState = ReadableState; const EE = require('events').EventEmitter; const Stream = require('stream'); +const Buffer = require('buffer').Buffer; const util = require('util'); const debug = util.debuglog('stream'); var StringDecoder; diff --git a/lib/_stream_writable.js b/lib/_stream_writable.js index 06bde5561683a3..5b374688b018fc 100644 --- a/lib/_stream_writable.js +++ b/lib/_stream_writable.js @@ -9,6 +9,7 @@ Writable.WritableState = WritableState; const util = require('util'); const Stream = require('stream'); +const Buffer = require('buffer').Buffer; util.inherits(Writable, Stream); diff --git a/lib/_tls_legacy.js b/lib/_tls_legacy.js index 2ae922a81ea91e..e0c60dbdf6ea83 100644 --- a/lib/_tls_legacy.js +++ b/lib/_tls_legacy.js @@ -7,6 +7,7 @@ const tls = require('tls'); const util = require('util'); const common = require('_tls_common'); const debug = util.debuglog('tls-legacy'); +const Buffer = require('buffer').Buffer; const Timer = process.binding('timer_wrap').Timer; var Connection = null; try { diff --git a/lib/_tls_wrap.js b/lib/_tls_wrap.js index ede98ee4bf1985..88684f86b2e845 100644 --- a/lib/_tls_wrap.js +++ b/lib/_tls_wrap.js @@ -8,6 +8,7 @@ const util = require('util'); const listenerCount = require('events').listenerCount; const common = require('_tls_common'); const StreamWrap = require('_stream_wrap').StreamWrap; +const Buffer = require('buffer').Buffer; const Duplex = require('stream').Duplex; const debug = util.debuglog('tls'); const Timer = process.binding('timer_wrap').Timer; diff --git a/lib/assert.js b/lib/assert.js index 70e784a50c34b9..ea142ed01f8f6e 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -27,6 +27,7 @@ // UTILITY const compare = process.binding('buffer').compare; const util = require('util'); +const Buffer = require('buffer').Buffer; const pSlice = Array.prototype.slice; // 1. The assert module provides functions that throw diff --git a/lib/buffer.js b/lib/buffer.js index ccd899da5f32ae..81fe904a8b76c0 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -1,3 +1,4 @@ +/* eslint-disable require-buffer */ 'use strict'; const binding = process.binding('buffer'); diff --git a/lib/child_process.js b/lib/child_process.js index d8d2ec6aacff56..6856c53266804a 100644 --- a/lib/child_process.js +++ b/lib/child_process.js @@ -6,6 +6,7 @@ const constants = require('constants'); const uv = process.binding('uv'); const spawn_sync = process.binding('spawn_sync'); +const Buffer = require('buffer').Buffer; const Pipe = process.binding('pipe_wrap').Pipe; const child_process = require('internal/child_process'); diff --git a/lib/crypto.js b/lib/crypto.js index d0ecef42a2412f..510e8bfbdb09c6 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -15,6 +15,7 @@ try { throw new Error('node.js not compiled with openssl crypto support.'); } +const Buffer = require('buffer').Buffer; const constants = require('constants'); const stream = require('stream'); const util = require('util'); diff --git a/lib/dgram.js b/lib/dgram.js index 2b65b94bce551a..22dc7a23192042 100644 --- a/lib/dgram.js +++ b/lib/dgram.js @@ -1,6 +1,7 @@ 'use strict'; const assert = require('assert'); +const Buffer = require('buffer').Buffer; const util = require('util'); const events = require('events'); const constants = require('constants'); diff --git a/lib/fs.js b/lib/fs.js index add234420ec7a7..12a3ff0ffe2f55 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -10,6 +10,7 @@ const pathModule = require('path'); const binding = process.binding('fs'); const constants = require('constants'); const fs = exports; +const Buffer = require('buffer').Buffer; const Stream = require('stream').Stream; const EventEmitter = require('events').EventEmitter; const FSReqWrap = binding.FSReqWrap; diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js index 428250cb9ee20a..c6bb41ffdeb544 100644 --- a/lib/internal/child_process.js +++ b/lib/internal/child_process.js @@ -1,6 +1,7 @@ 'use strict'; const StringDecoder = require('string_decoder').StringDecoder; +const Buffer = require('buffer').Buffer; const EventEmitter = require('events').EventEmitter; const net = require('net'); const dgram = require('dgram'); diff --git a/lib/internal/smalloc.js b/lib/internal/smalloc.js index f181cb60cf2d7c..bf7fc3310d0fc7 100644 --- a/lib/internal/smalloc.js +++ b/lib/internal/smalloc.js @@ -1,6 +1,7 @@ 'use strict'; const smalloc = process.binding('smalloc'); +const Buffer = require('buffer').Buffer; const kMaxLength = smalloc.kMaxLength; const kMinType = smalloc.kMinType; const kMaxType = smalloc.kMaxType; diff --git a/lib/net.js b/lib/net.js index 53095210fdd808..c5e199725233a5 100644 --- a/lib/net.js +++ b/lib/net.js @@ -8,6 +8,7 @@ const assert = require('assert'); const cares = process.binding('cares_wrap'); const uv = process.binding('uv'); +const Buffer = require('buffer').Buffer; const TTYWrap = process.binding('tty_wrap'); const TCP = process.binding('tcp_wrap').TCP; const Pipe = process.binding('pipe_wrap').Pipe; diff --git a/lib/querystring.js b/lib/querystring.js index 6aa188725ae25a..8735d2814bc307 100644 --- a/lib/querystring.js +++ b/lib/querystring.js @@ -3,6 +3,7 @@ 'use strict'; const QueryString = exports; +const Buffer = require('buffer').Buffer; function charCode(c) { diff --git a/lib/readline.js b/lib/readline.js index 4107c998242069..865b6e0b56117a 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -10,6 +10,7 @@ const kHistorySize = 30; const util = require('util'); const inherits = util.inherits; +const Buffer = require('buffer').Buffer; const EventEmitter = require('events').EventEmitter; diff --git a/lib/string_decoder.js b/lib/string_decoder.js index 62ea38e08f051c..0c9fdfb416dd4e 100644 --- a/lib/string_decoder.js +++ b/lib/string_decoder.js @@ -1,5 +1,7 @@ 'use strict'; +const Buffer = require('buffer').Buffer; + function assertEncoding(encoding) { // Do not cache `Buffer.isEncoding`, some modules monkey-patch it to support // additional encodings diff --git a/lib/tls.js b/lib/tls.js index 10c82860ba826e..714fdebfc079bd 100644 --- a/lib/tls.js +++ b/lib/tls.js @@ -4,6 +4,7 @@ const net = require('net'); const url = require('url'); const util = require('util'); const binding = process.binding('crypto'); +const Buffer = require('buffer').Buffer; // Allow {CLIENT_RENEG_LIMIT} client-initiated session renegotiations // every {CLIENT_RENEG_WINDOW} seconds. An error event is emitted if more diff --git a/lib/util.js b/lib/util.js index c4aea9d58890b5..177cf454eeca91 100644 --- a/lib/util.js +++ b/lib/util.js @@ -1,6 +1,7 @@ 'use strict'; const uv = process.binding('uv'); +const Buffer = require('buffer').Buffer; const Debug = require('vm').runInDebugContext('Debug'); const internalUtil = require('internal/util'); diff --git a/lib/zlib.js b/lib/zlib.js index 4dd8b30b28a768..ebb0377912ce82 100644 --- a/lib/zlib.js +++ b/lib/zlib.js @@ -1,5 +1,6 @@ 'use strict'; +const Buffer = require('buffer').Buffer; const Transform = require('_stream_transform'); const binding = process.binding('zlib'); const util = require('util'); diff --git a/test/.eslintrc b/test/.eslintrc index d5d95584ea6811..608c62dff5fa63 100644 --- a/test/.eslintrc +++ b/test/.eslintrc @@ -3,3 +3,10 @@ rules: ## allow unreachable code no-unreachable: 0 + ## allow undeclared variables + no-undef: 0 + ## allow global Buffer usage + require-buffer: 0 + +globals: + gc: false diff --git a/test/parallel/test-cluster-worker-exit.js b/test/parallel/test-cluster-worker-exit.js index 982b099cd1cfe1..3607a992a33dff 100644 --- a/test/parallel/test-cluster-worker-exit.js +++ b/test/parallel/test-cluster-worker-exit.js @@ -106,17 +106,13 @@ function checkResults(expected_results, results) { var actual = results[k], expected = expected_results[k]; - if (typeof expected === 'function') { - expected(r[k]); - } else { - var msg = (expected[1] || '') + - (' [expected: ' + expected[0] + ' / actual: ' + actual + ']'); + var msg = (expected[1] || '') + + (' [expected: ' + expected[0] + ' / actual: ' + actual + ']'); - if (expected && expected.length) { - assert.equal(actual, expected[0], msg); - } else { - assert.equal(actual, expected, msg); - } + if (expected && expected.length) { + assert.equal(actual, expected[0], msg); + } else { + assert.equal(actual, expected, msg); } } } diff --git a/test/parallel/test-cluster-worker-kill.js b/test/parallel/test-cluster-worker-kill.js index c73cf2dbd5216e..e12b466610171a 100644 --- a/test/parallel/test-cluster-worker-kill.js +++ b/test/parallel/test-cluster-worker-kill.js @@ -106,16 +106,12 @@ function checkResults(expected_results, results) { var actual = results[k], expected = expected_results[k]; - if (typeof expected === 'function') { - expected(r[k]); + var msg = (expected[1] || '') + + (' [expected: ' + expected[0] + ' / actual: ' + actual + ']'); + if (expected && expected.length) { + assert.equal(actual, expected[0], msg); } else { - var msg = (expected[1] || '') + - (' [expected: ' + expected[0] + ' / actual: ' + actual + ']'); - if (expected && expected.length) { - assert.equal(actual, expected[0], msg); - } else { - assert.equal(actual, expected, msg); - } + assert.equal(actual, expected, msg); } } } diff --git a/test/pummel/test-net-timeout.js b/test/pummel/test-net-timeout.js index 347e3a4344d37b..25544a6d5f5989 100644 --- a/test/pummel/test-net-timeout.js +++ b/test/pummel/test-net-timeout.js @@ -79,7 +79,7 @@ process.on('exit', function() { assert.ok(starttime != null); assert.ok(timeouttime != null); - diff = timeouttime - starttime; + var diff = timeouttime - starttime; console.log('diff = ' + diff); assert.ok(timeout < diff); diff --git a/tools/eslint-rules/require-buffer.js b/tools/eslint-rules/require-buffer.js new file mode 100644 index 00000000000000..7a975df58a608f --- /dev/null +++ b/tools/eslint-rules/require-buffer.js @@ -0,0 +1,16 @@ +'use strict'; + +const msg = 'Use const Buffer = require(\'buffer\').Buffer; ' + + 'at the beginning of this file'; + +module.exports = function(context) { + return { + 'Program:exit': function() { + context.getScope().through.forEach(function(ref) { + if (ref.identifier.name === 'Buffer') { + context.report(ref.identifier, msg); + } + }); + } + } +} diff --git a/vcbuild.bat b/vcbuild.bat index 21e8d5411a7f4e..2bfdb890d54a17 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -181,7 +181,7 @@ goto jslint :jslint if not defined jslint goto exit echo running jslint -%config%\iojs tools\eslint\bin\eslint.js src lib test --reset --quiet +%config%\iojs tools\eslint\bin\eslint.js src lib test --rulesdir tools\eslint-rules --reset --quiet goto exit :create-msvs-files-failed