Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

eslint-config-hapi

Package Overview
Dependencies
Maintainers
2
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-config-hapi - npm Package Compare versions

Comparing version
9.1.0
to
10.0.0
+69
-66
lib/index.js

@@ -9,69 +9,72 @@ 'use strict';

rules: {
'camelcase': 0,
'consistent-return': 0,
'vars-on-top': 0,
'new-cap': 0,
'no-console': 0,
'no-constant-condition': 2,
'no-empty': 0,
'no-native-reassign': 0,
'no-underscore-dangle': 0,
'no-undef': 0,
'no-process-exit': 0,
'no-unused-expressions': 0,
'no-regex-spaces': 0,
'no-catch-shadow': 0,
'no-lonely-if': 0,
'brace-style': [1, 'stroustrup'],
'no-shadow': [1, { 'allow': ['err', 'done'] }],
'no-unused-vars': [1, { vars: 'all', varsIgnorePattern: '^internals$', 'args': 'none' }],
'one-var': [2, 'never'],
'handle-callback-err': [2, '^(e|err|error)$'],
'hapi/hapi-capitalize-modules': [1, 'global-scope-only'],
'hapi/hapi-for-you': [1, { maxDepth: 3, startIterator: 'i' }],
'hapi/hapi-scope-start': 1,
'array-bracket-spacing': 1,
'dot-notation': 1,
'eol-last': 1,
'no-trailing-spaces': 1,
'no-eq-null': 1,
'no-extend-native': 1,
'no-redeclare': 1,
'no-loop-func': 1,
'yoda': [1, 'never'],
'sort-vars': 1,
'arrow-parens': [2, 'always'],
'arrow-spacing': [2, { 'before': true, 'after': true }],
'hapi/no-arrowception': 2,
'quotes': [2, 'single'],
'consistent-this': [2, 'self'],
'new-parens': 2,
'no-array-constructor': 2,
'no-confusing-arrow': 2,
'no-new-object': 2,
'no-spaced-func': 2,
'no-mixed-spaces-and-tabs': 2,
'keyword-spacing': [2, { 'before': true, 'after': true }],
'semi': [2, 'always'],
'semi-spacing': [2, { 'before': false, 'after': true }],
'space-infix-ops': 2,
'space-unary-ops': [1, { 'words': true, 'nonwords': false }],
'strict': [2, 'global'],
'eqeqeq': 2,
'curly': [2, 'all'],
'no-eval': 2,
'no-else-return': 2,
'no-return-assign': 2,
'no-new-wrappers': 2,
'comma-dangle': [2, 'never'],
'no-sparse-arrays': 2,
'no-ex-assign': 2,
'no-var': 2,
'prefer-arrow-callback': 2,
'prefer-const': 2,
'indent': [2, 4, { 'SwitchCase': 1 }],
'space-before-function-paren': [2, { 'anonymous': 'always', 'named': 'never' }],
'func-style': [2, 'expression'],
'object-curly-spacing': [2, 'always']
'camelcase': 'off',
'consistent-return': 'off',
'vars-on-top': 'off',
'new-cap': 'off',
'no-console': 'off',
'no-constant-condition': 'error',
'no-empty': 'off',
'no-native-reassign': 'off',
'no-underscore-dangle': 'off',
'no-undef': 'off',
'no-process-exit': 'off',
'no-unused-expressions': 'off',
'no-regex-spaces': 'off',
'no-catch-shadow': 'off',
'no-lonely-if': 'off',
'brace-style': ['warn', 'stroustrup'],
'no-shadow': ['warn', { 'allow': ['err', 'done'] }],
'no-unused-vars': ['warn', { vars: 'all', varsIgnorePattern: '^internals$', 'args': 'none' }],
'one-var': ['error', 'never'],
'handle-callback-err': ['error', '^(e|err|error)$'],
'hapi/hapi-capitalize-modules': ['warn', 'global-scope-only'],
'hapi/hapi-for-you': ['warn', { maxDepth: 3, startIterator: 'i' }],
'hapi/hapi-scope-start': 'warn',
'array-bracket-spacing': 'warn',
'dot-notation': 'warn',
'eol-last': 'warn',
'no-trailing-spaces': 'warn',
'no-eq-null': 'warn',
'no-extend-native': 'warn',
'no-redeclare': 'warn',
'no-loop-func': 'warn',
'yoda': ['warn', 'never'],
'sort-vars': 'warn',
'arrow-parens': ['error', 'always'],
'arrow-spacing': ['error', { 'before': true, 'after': true }],
'hapi/no-arrowception': 'error',
'quotes': ['error', 'single'],
'consistent-this': ['error', 'self'],
'new-parens': 'error',
'no-array-constructor': 'error',
'no-confusing-arrow': 'error',
'no-new-object': 'error',
'no-spaced-func': 'error',
'no-mixed-spaces-and-tabs': 'error',
'keyword-spacing': ['error', { 'before': true, 'after': true }],
'semi': ['error', 'always'],
'semi-spacing': ['error', { 'before': false, 'after': true }],
'space-infix-ops': 'error',
'space-unary-ops': ['warn', { 'words': true, 'nonwords': false }],
'strict': ['error', 'global'],
'eqeqeq': 'error',
'curly': ['error', 'all'],
'no-eval': 'error',
'no-else-return': 'error',
'no-return-assign': 'error',
'no-new-wrappers': 'error',
'comma-dangle': ['error', 'never'],
'no-sparse-arrays': 'error',
'no-ex-assign': 'error',
'no-var': 'error',
'prefer-arrow-callback': 'error',
'prefer-const': 'error',
'indent': ['error', 4, { 'SwitchCase': 1 }],
'space-before-function-paren': ['error', { 'anonymous': 'always', 'named': 'never' }],
'func-style': ['error', 'expression'],
'object-curly-spacing': ['error', 'always'],
'object-shorthand': ['error', 'properties'],
'no-unsafe-finally': 'error',
'no-useless-computed-key': 'error'
}
};
The MIT License (MIT)
Copyright (c) 2015 Continuation Labs
Copyright (c) 2015-2016 Continuation Labs

@@ -22,2 +22,1 @@ Permission is hereby granted, free of charge, to any person obtaining a copy

SOFTWARE.
{
"name": "eslint-config-hapi",
"version": "9.1.0",
"version": "10.0.0",
"description": "Shareable ESLint config for the hapi ecosystem",

@@ -18,4 +18,7 @@ "author": "Continuation Labs <contact@continuation.io> (http://continuation.io/)",

"lint": "belly-button -I 'node_modules/**' -I 'test/fixtures/**'",
"test": "npm run lint && lab -T test/transformer.js -v -t 100 -a code"
"test": "npm run lint && lab -v -t 100 -a code"
},
"engines": {
"node": ">=4.0.0"
},
"peerDependencies": {

@@ -25,7 +28,7 @@ "eslint-plugin-hapi": "4.x.x"

"devDependencies": {
"belly-button": "1.x.x",
"code": "1.x.x",
"eslint": "2.x.x",
"belly-button": "3.x.x",
"code": "3.x.x",
"eslint": "3.x.x",
"eslint-plugin-hapi": "4.x.x",
"lab": "6.x.x"
"lab": "10.x.x"
},

@@ -32,0 +35,0 @@ "keywords": [

@@ -18,11 +18,1 @@ # eslint-config-hapi

**Note:** `eslint-plugin-hapi` is a plugin containing custom hapi linting rules. It is a peer dependency because of the way ESLint handles shareable configs that include plugins and custom rules (see [eslint/eslint#3458](https://github.com/eslint/eslint/issues/3458) and [eslint/eslint#2518](https://github.com/eslint/eslint/issues/2518) for more background).
## Working with ES5
By default, `eslint-config-hapi` enforces several rules that require ES6 features. If you would like to use `eslint-config-hapi`, but are unable to abandon ES5, you can use ES5 config. To use this config, add `eslint-config-hapi` and `eslint-plugin-hapi` to your `package.json`. Then, in your ESLint configuration add:
```
{
"extends": "eslint-config-hapi/lib/es5"
}
```

Sorry, the diff of this file is not supported yet

sudo: false
language: node_js
node_js:
- "0.10"
- "0.12"
- "4"
- "5"
- "iojs-v1"
- "iojs-v2"
- "iojs"
'use strict';
var Path = require('path');
module.exports = {
extends: Path.join(__dirname, 'index.js'),
rules: {
'no-var': 0,
'prefer-arrow-callback': 0
}
};
/* eslint-disable strict, no-unused-vars */
const foo = bar => {
return bar + 1;
};
const baz = (quux) => {
return quux + 1;
};
/* eslint-disable strict, no-unused-vars */
const foo = (bar)=> {
return bar + 1;
};
const baz = (quux) =>{
return quux + 1;
};
const fn = (arg) => {
return arg + 1;
};
/* eslint-disable strict, keyword-spacing */
const foo = true;
let bar = 0;
if (foo) {
bar = 1;
} else {
bar = 2;
}
if (foo) {
bar = 3;
}
else {
bar = 4;
}
return bar;
/* eslint-disable strict */
const foo_bar = '123';
const barBaz = '456';
return foo_bar + barBaz;
/* eslint-disable no-unused-vars */
'use strict';
var foo = 1; // var is an error using the ES6 config
/* eslint-disable strict */
module.exports = `__filename = ${__filename}`;
/* eslint-disable no-unused-vars */
'use strict';
module.exports.foo = function (value) {
const top = function (err) {
const inner = function (e) {
return value;
};
};
top();
};
module.exports.bar = function (value) {
const top = function (abc) {
const inner = function (xyz) {
return value;
};
};
top();
};
/* eslint-disable no-unused-vars */
'use strict';
const Fs = require('fs');
const net = require('net');
const fn = function () {
const Assert = require('assert');
const dgram = require('dgram');
};
fn();
/* eslint-disable no-unused-vars */
'use strict';
const arr = [];
for (let i = 0; i < arr.length; ++i) {
for (let k = 0; k < arr.length; k++) {
}
}
/* eslint-disable strict, no-unused-vars */
const foo = function () {
return 'there should be a blank line before this line';
};
const bar = function () {
return 'no lint errors';
};
const baz = () => {
return 'no lint errors';
};
const quux = () => 85; // no lint errors
const buux = () => ({
a: 'b'
});
/* eslint-disable strict */
const foo = 'foo';
let result = 0;
switch (foo) {
case 'foo':
result = 1;
break;
case 'bar':
result = 2;
break;
case 'baz':
result = 3;
break;
}
return result;
/* eslint-disable strict */
module.exports.foo = function (value) {
return value + 1;
};
module.exports.foo = function (value) {
return value + 1;
};
/* eslint-disable strict, no-unused-vars */
const foo = () => () => 85;
const bar = () => 85;
/* eslint-disable no-unused-vars */
'use strict';
if ((foo) => 1) {
// Do nothing
}
/* eslint-disable strict, no-unused-vars, handle-callback-err */
// Declare internals
const internals = {};
module.exports.foo = function (value) {
const top = function (err) {
const inner = function (err) {
return value;
};
};
top();
};
module.exports.bar = function (value) {
const top = function (res) {
const inner = function (res) {
return value;
};
};
top();
};
/* eslint-disable strict */
const internals = {};
const internals2 = {};
const bar = function (foo) {
};
return bar;
/* eslint-disable no-unused-vars */
'use strict';
var foo = 1;
let bar = 2;
const baz = 3;
bar = 4;
/* eslint-disable strict */
const Fs = require('fs');
module.exports = Fs;
/* eslint-disable no-unused-vars, prefer-const */
'use strict';
const foo = 1;
let bar;
let baz, quux;
bar = 1;
/* eslint-disable no-unused-vars, handle-callback-err */
'use strict';
const foo = (arg, callback) => {
return callback(null, arg + 1);
};
const bar = function (err, value) {
};
const baz = (err, value) => {
};
foo(1, bar);
foo(2, baz);
foo(3, (err, value) => {
});
foo(4, function (err, value) {
});
/* eslint-disable no-unused-vars */
'use strict';
let foo = 1;
let bar = 2;
const baz = 3;
bar++;
/* eslint-disable strict */
module.exports.foo = function () {
return 42
};
module.exports.bar = function () {
return 85;
};
/* eslint-disable no-unused-vars */
'use strict';
const foo = function () {
};
const bar = function() {
};
const baz = function baz() {
};
const quux = function quux () {
};
/* eslint-disable no-unused-vars */
const foo = 'this should be using strict mode but isnt';
'use strict';
var Fs = require('fs');
var Path = require('path');
var Code = require('code');
var ESLint = require('eslint');
var Lab = require('lab');
var Config = require('../lib');
var Es5Config = require('../lib/es5');
var CLIEngine = ESLint.CLIEngine;
// Test shortcuts
var lab = exports.lab = Lab.script();
var expect = Code.expect;
var describe = lab.describe;
var it = lab.it;
Code.settings.truncateMessages = false;
function getLinter (config) {
return new CLIEngine({
useEslintrc: false,
baseConfig: config || Config
});
}
function lintFile (file, config) {
var cli = getLinter(config);
var data = Fs.readFileSync(Path.join(__dirname, file), 'utf8');
return cli.executeOnText(data);
}
describe('eslint-config-hapi', function () {
it('enforces file level strict mode', function (done) {
var output = lintFile('fixtures/strict.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('strict');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Use the global form of \'use strict\'.');
expect(msg.line).to.equal(2);
expect(msg.column).to.equal(1);
expect(msg.nodeType).to.equal('Program');
expect(msg.source).to.equal('const foo = \'this should be using strict mode but isnt\';');
done();
});
it('enforces stroustrup style braces', function (done) {
var output = lintFile('fixtures/brace-style.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(1);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(1);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('brace-style');
expect(msg.severity).to.equal(1);
expect(msg.message).to.equal('Closing curly brace appears on the same line as the subsequent block.');
expect(msg.line).to.equal(7);
expect(msg.column).to.equal(8);
expect(msg.nodeType).to.equal('BlockStatement');
expect(msg.source).to.equal('} else {');
done();
});
it('enforces four space indentation', function (done) {
var output = lintFile('fixtures/indent.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('indent');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected indentation of 4 space characters but found 2.');
expect(msg.line).to.equal(4);
expect(msg.column).to.equal(3);
expect(msg.nodeType).to.equal('ReturnStatement');
expect(msg.source).to.equal(' return value + 1;');
done();
});
it('enforces case indentation in switch statements', function (done) {
var output = lintFile('fixtures/indent-switch-case.js');
var results = output.results[0];
expect(output.errorCount).to.equal(5);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(5);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('indent');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected indentation of 4 space characters but found 0.');
expect(msg.line).to.equal(10);
expect(msg.column).to.equal(1);
expect(msg.nodeType).to.equal('SwitchCase');
expect(msg.source).to.equal('case \'bar\':');
msg = results.messages[1];
expect(msg.ruleId).to.equal('indent');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected indentation of 8 space characters but found 4.');
expect(msg.line).to.equal(11);
expect(msg.column).to.equal(5);
expect(msg.nodeType).to.equal('ExpressionStatement');
expect(msg.source).to.equal(' result = 2;');
msg = results.messages[2];
expect(msg.ruleId).to.equal('indent');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected indentation of 8 space characters but found 4.');
expect(msg.line).to.equal(12);
expect(msg.column).to.equal(5);
expect(msg.nodeType).to.equal('BreakStatement');
expect(msg.source).to.equal(' break;');
msg = results.messages[3];
expect(msg.ruleId).to.equal('indent');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected indentation of 8 space characters but found 4.');
expect(msg.line).to.equal(14);
expect(msg.column).to.equal(5);
expect(msg.nodeType).to.equal('ExpressionStatement');
expect(msg.source).to.equal(' result = 3;');
msg = results.messages[4];
expect(msg.ruleId).to.equal('indent');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected indentation of 8 space characters but found 4.');
expect(msg.line).to.equal(15);
expect(msg.column).to.equal(5);
expect(msg.nodeType).to.equal('BreakStatement');
expect(msg.source).to.equal(' break;');
done();
});
it('enforces semicolon usage', function (done) {
var output = lintFile('fixtures/semi.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('semi');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Missing semicolon.');
expect(msg.line).to.equal(4);
expect(msg.column).to.equal(14);
expect(msg.nodeType).to.equal('ReturnStatement');
expect(msg.source).to.equal(' return 42');
done();
});
it('enforces space-before-function-paren', function (done) {
var output = lintFile('fixtures/space-before-function-paren.js');
var results = output.results[0];
expect(output.errorCount).to.equal(2);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(2);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('space-before-function-paren');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Missing space before function parentheses.');
expect(msg.line).to.equal(8);
expect(msg.column).to.equal(21);
expect(msg.nodeType).to.equal('FunctionExpression');
expect(msg.source).to.equal('const bar = function() {');
msg = results.messages[1];
expect(msg.ruleId).to.equal('space-before-function-paren');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Unexpected space before function parentheses.');
expect(msg.line).to.equal(16);
expect(msg.column).to.equal(27);
expect(msg.nodeType).to.equal('FunctionExpression');
expect(msg.source).to.equal('const quux = function quux () {');
done();
});
it('enforces hapi/hapi-for-you', function (done) {
var output = lintFile('fixtures/hapi-for-you.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(2);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(2);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('hapi/hapi-for-you');
expect(msg.severity).to.equal(1);
expect(msg.message).to.equal('Expected iterator \'j\', but got \'k\'.');
expect(msg.line).to.equal(6);
expect(msg.column).to.equal(5);
expect(msg.nodeType).to.equal('ForStatement');
expect(msg.source).to.equal(' for (let k = 0; k < arr.length; k++) {');
msg = results.messages[1];
expect(msg.ruleId).to.equal('hapi/hapi-for-you');
expect(msg.severity).to.equal(1);
expect(msg.message).to.equal('Update to iterator should use prefix operator.');
expect(msg.line).to.equal(6);
expect(msg.column).to.equal(5);
expect(msg.nodeType).to.equal('ForStatement');
expect(msg.source).to.equal(' for (let k = 0; k < arr.length; k++) {');
done();
});
it('enforces hapi/hapi-scope-start', function (done) {
var output = lintFile('fixtures/hapi-scope-start.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(1);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(1);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('hapi/hapi-scope-start');
expect(msg.severity).to.equal(1);
expect(msg.message).to.equal('Missing blank line at beginning of function.');
expect(msg.line).to.equal(2);
expect(msg.column).to.equal(13);
expect(msg.nodeType).to.equal('FunctionExpression');
expect(msg.source).to.equal('const foo = function () {');
done();
});
it('enforces hapi/hapi-capitalize-modules', function (done) {
var output = lintFile('fixtures/hapi-capitalize-modules.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(1);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(1);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('hapi/hapi-capitalize-modules');
expect(msg.severity).to.equal(1);
expect(msg.message).to.equal('Imported module variable name not capitalized.');
expect(msg.line).to.equal(4);
expect(msg.column).to.equal(7);
expect(msg.nodeType).to.equal('VariableDeclarator');
expect(msg.source).to.equal('const net = require(\'net\');');
done();
});
it('enforces hapi/no-arrowception', function (done) {
var output = lintFile('fixtures/no-arrowception.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('hapi/no-arrowception');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Arrow function implicitly creates arrow function.');
expect(msg.line).to.equal(2);
expect(msg.column).to.equal(13);
expect(msg.nodeType).to.equal('ArrowFunctionExpression');
expect(msg.source).to.equal('const foo = () => () => 85;');
done();
});
it('enforces no-shadow rule', function (done) {
var output = lintFile('fixtures/no-shadow.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(1);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(1);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('no-shadow');
expect(msg.severity).to.equal(1);
expect(msg.message).to.equal('\'res\' is already declared in the upper scope.');
expect(msg.line).to.equal(27);
expect(msg.column).to.equal(33);
expect(msg.nodeType).to.equal('Identifier');
expect(msg.source).to.equal(' const inner = function (res) {');
done();
});
it('enforces one-var rule', function (done) {
var output = lintFile('fixtures/one-var.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('one-var');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Split \'let\' declarations into multiple statements.');
expect(msg.line).to.equal(5);
expect(msg.column).to.equal(1);
expect(msg.nodeType).to.equal('VariableDeclaration');
expect(msg.source).to.equal('let baz, quux;');
done();
});
it('enforces no-unused-vars', function (done) {
var output = lintFile('fixtures/no-unused-vars.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(1);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(1);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('no-unused-vars');
expect(msg.severity).to.equal(1);
expect(msg.message).to.equal('\'internals2\' is defined but never used');
expect(msg.line).to.equal(3);
expect(msg.column).to.equal(7);
expect(msg.nodeType).to.equal('Identifier');
expect(msg.source).to.equal('const internals2 = {};');
done();
});
it('enforces prefer-const', function (done) {
var output = lintFile('fixtures/prefer-const.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('prefer-const');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('\'foo\' is never modified, use \'const\' instead.');
expect(msg.line).to.equal(4);
expect(msg.column).to.equal(5);
expect(msg.nodeType).to.equal('Identifier');
expect(msg.source).to.equal('let foo = 1;');
done();
});
it('enforces no-var', function (done) {
var output = lintFile('fixtures/no-var.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('no-var');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Unexpected var, use let or const instead.');
expect(msg.line).to.equal(3);
expect(msg.column).to.equal(1);
expect(msg.nodeType).to.equal('VariableDeclaration');
expect(msg.source).to.equal('var foo = 1;');
done();
});
it('enforces arrow-parens', function (done) {
var output = lintFile('fixtures/arrow-parens.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('arrow-parens');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected parentheses around arrow function argument.');
expect(msg.line).to.equal(2);
expect(msg.column).to.equal(13);
expect(msg.nodeType).to.equal('ArrowFunctionExpression');
expect(msg.source).to.equal('const foo = bar => {');
done();
});
it('enforces arrow-spacing', function (done) {
var output = lintFile('fixtures/arrow-spacing.js');
var results = output.results[0];
expect(output.errorCount).to.equal(2);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(2);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('arrow-spacing');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Missing space before =>');
expect(msg.line).to.equal(2);
expect(msg.column).to.equal(17);
expect(msg.nodeType).to.equal('Punctuator');
expect(msg.source).to.equal('const foo = (bar)=> {');
msg = results.messages[1];
expect(msg.ruleId).to.equal('arrow-spacing');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Missing space after =>');
expect(msg.line).to.equal(7);
expect(msg.column).to.equal(22);
expect(msg.nodeType).to.equal('Punctuator');
expect(msg.source).to.equal('const baz = (quux) =>{');
done();
});
it('enforces prefer-arrow-callback', function (done) {
var output = lintFile('fixtures/prefer-arrow-callback.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('prefer-arrow-callback');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Unexpected function expression.');
expect(msg.line).to.equal(21);
expect(msg.column).to.equal(8);
expect(msg.nodeType).to.equal('FunctionExpression');
expect(msg.source).to.equal('foo(4, function (err, value) {');
done();
});
it('enforces no-constant-condition rule', function (done) {
var output = lintFile('fixtures/no-constant-condition.js');
var results = output.results[0];
expect(output.errorCount).to.equal(1);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(1);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('no-constant-condition');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Unexpected constant condition.');
expect(msg.line).to.equal(3);
expect(msg.column).to.equal(1);
expect(msg.nodeType).to.equal('IfStatement');
expect(msg.source).to.equal('if ((foo) => 1) {');
done();
});
it('enforces handle-callback-err rule', function (done) {
var output = lintFile('fixtures/handle-callback-err.js');
var results = output.results[0];
expect(output.errorCount).to.equal(2);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(2);
expect(results.warningCount).to.equal(0);
var msg = results.messages[0];
expect(msg.ruleId).to.equal('handle-callback-err');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected error to be handled.');
expect(msg.line).to.equal(6);
expect(msg.column).to.equal(17);
expect(msg.nodeType).to.equal('FunctionExpression');
expect(msg.source).to.equal(' const top = function (err) {');
msg = results.messages[1];
expect(msg.ruleId).to.equal('handle-callback-err');
expect(msg.severity).to.equal(2);
expect(msg.message).to.equal('Expected error to be handled.');
expect(msg.line).to.equal(8);
expect(msg.column).to.equal(23);
expect(msg.nodeType).to.equal('FunctionExpression');
expect(msg.source).to.equal(' const inner = function (e) {');
done();
});
it('uses the node environment', function (done) {
var output = lintFile('fixtures/node-env.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(0);
expect(results.messages).to.deep.equal([]);
done();
});
it('uses the ES6 environment', function (done) {
var output = lintFile('fixtures/es6-env.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(0);
expect(results.messages).to.deep.equal([]);
done();
});
it('does not enforce the camelcase lint rule', function (done) {
var output = lintFile('fixtures/camelcase.js');
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(0);
expect(results.messages).to.deep.equal([]);
done();
});
it('supports ES5 linting', function (done) {
var output = lintFile('fixtures/es5.js', Es5Config);
var results = output.results[0];
expect(output.errorCount).to.equal(0);
expect(output.warningCount).to.equal(0);
expect(results.errorCount).to.equal(0);
expect(results.warningCount).to.equal(0);
expect(results.messages).to.deep.equal([]);
done();
});
});
'use strict';
module.exports = [
{
ext: '.js',
transform: function (content, filename) {
// Ignore fixtures which can break on old versions of Node
if (filename.indexOf('fixtures') >= 0) {
return '';
}
return content;
}
}
];