Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use ES6 syntax features #82

Merged
merged 3 commits into from
Oct 25, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"extends": "eslint:recommended",
"parserOptions": { "ecmaVersion": 6 },
"env": {
"mocha": true,
"node": true
Expand Down
10 changes: 5 additions & 5 deletions lib/rules/missing-assertion.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
"use strict";
'use strict';

module.exports = function(context) {
return {
ExpressionStatement: function(node) {
var expression = node.expression;
ExpressionStatement(node) {
let {expression} = node;
if (expression.type !== 'CallExpression')
return;

var callee = expression.callee;
let {callee} = expression;
if (callee.type === 'Identifier' && callee.name === 'expect') {
context.report({
node: node,
node,
message: 'expect(...) used without assertion'
})
}
Expand Down
22 changes: 11 additions & 11 deletions lib/rules/no-inner-compare.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
"use strict";
'use strict';

var findExpectCall = require('../util/find-expect-call');
const findExpectCall = require('../util/find-expect-call');

var HINTS = {
const HINTS = {
'==': 'to.equal()',
'!=': 'to.not.equal()',
'===': 'to.equal()',
Expand All @@ -15,28 +15,28 @@ var HINTS = {

module.exports = function(context) {
return {
ExpressionStatement: function(node) {
var expression = node.expression;
ExpressionStatement(node) {
let {expression} = node;
if (expression.type !== 'MemberExpression' && expression.type !== 'CallExpression')
return;

var expect = findExpectCall(expression);
let expect = findExpectCall(expression);
if (!expect)
return;

var args = expect.arguments;
var firstArgument = args[0];
let args = expect.arguments;
let [firstArgument] = args;
if (!firstArgument || firstArgument.type !== 'BinaryExpression')
return;

var hint = HINTS[firstArgument.operator];
let hint = HINTS[firstArgument.operator];
if (!hint)
return;

context.report({
node: firstArgument,
message: 'operator "' + firstArgument.operator + '" used in expect(), use "' + hint + '" instead'
})
message: `operator "${firstArgument.operator}" used in expect(), use "${hint}" instead`
});
}
};
};
36 changes: 18 additions & 18 deletions lib/rules/terminating-properties.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
"use strict";
'use strict';

var findExpectCall = require('../util/find-expect-call');
const findExpectCall = require('../util/find-expect-call');

var PROPERTY_TERMINATORS = [
const PROPERTY_TERMINATORS = [
'ok',
'true',
'false',
Expand All @@ -14,38 +14,38 @@ var PROPERTY_TERMINATORS = [
];

module.exports = function(context) {
var options = context.options[0] || {};
var additionalTerminators = options.properties || [];
var validTerminators = PROPERTY_TERMINATORS.concat(additionalTerminators);
let options = context.options[0] || {};
let additionalTerminators = options.properties || [];
let validTerminators = [...PROPERTY_TERMINATORS, ...additionalTerminators];

return {
ExpressionStatement: function(node) {
var expression = node.expression;
ExpressionStatement(node) {
let {expression} = node;
if (expression.type !== 'CallExpression')
return;

var callee = expression.callee;
let {callee} = expression;
if (callee.type !== 'MemberExpression')
return;

var property = callee.property;
if (property.type !== 'Identifier' || validTerminators.indexOf(property.name) === -1)
let {property} = callee;
if (property.type !== 'Identifier' || !validTerminators.includes(property.name))
return;

var expectCall = findExpectCall(callee.object);
let expectCall = findExpectCall(callee.object);
if (!expectCall)
return;

var source = context.getSourceCode();
let source = context.getSourceCode();

var calleeText = source.getText(callee);
var expectText = source.getText(expectCall);
var assertionText = calleeText.substr(expectText.length + 1);
let calleeText = source.getText(callee);
let expectText = source.getText(expectCall);
let assertionText = calleeText.substr(expectText.length + 1);

context.report({
node: property,
message: '"' + assertionText + '" used as function'
})
message: `"${assertionText}" used as function`
});
}
};
};
12 changes: 6 additions & 6 deletions tests/index.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
/* eslint-env mocha */
'use strict';

var plugin = require('..');
const plugin = require('..');

var assert = require('assert');
var fs = require('fs');
var path = require('path');
const assert = require('assert');
const fs = require('fs');
const path = require('path');

var rules = fs.readdirSync(path.resolve(__dirname, '../lib/rules/'))
.map(function(f) {
let rules = fs.readdirSync(path.resolve(__dirname, '../lib/rules/'))
.map((f) => {
return path.basename(f, '.js');
});

Expand Down
6 changes: 3 additions & 3 deletions tests/lib/rules/missing-assertions.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

var rule = require('../../../lib/rules/missing-assertion');
var RuleTester = require('eslint').RuleTester;
const rule = require('../../../lib/rules/missing-assertion');
const {RuleTester} = require('eslint');

var ruleTester = new RuleTester();
let ruleTester = new RuleTester();
ruleTester.run('missing-assertion', rule, {
valid: [{
code: [
Expand Down
6 changes: 3 additions & 3 deletions tests/lib/rules/no-inner-compare.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

var rule = require('../../../lib/rules/no-inner-compare');
var RuleTester = require('eslint').RuleTester;
const rule = require('../../../lib/rules/no-inner-compare');
const {RuleTester} = require('eslint');

var ruleTester = new RuleTester();
let ruleTester = new RuleTester();
ruleTester.run('no-inner-compare', rule, {
valid: [{
code: 'expect(true).to.be.ok;'
Expand Down
6 changes: 3 additions & 3 deletions tests/lib/rules/terminating-properties.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

var rule = require('../../../lib/rules/terminating-properties');
var RuleTester = require('eslint').RuleTester;
const rule = require('../../../lib/rules/terminating-properties');
const {RuleTester} = require('eslint');

var ruleTester = new RuleTester();
let ruleTester = new RuleTester();
ruleTester.run('terminating-properties', rule, {
valid: [{
code: [
Expand Down
20 changes: 10 additions & 10 deletions tests/lib/util/find-expect-call.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
'use strict';

var importFrom = require('import-from');
var expect = require('chai').expect;
var espree = importFrom(require.resolve('eslint'), 'espree');
var findExpectCall = require('../../../lib/util/find-expect-call');
const importFrom = require('import-from');
const {expect} = require('chai');
const espree = importFrom(require.resolve('eslint'), 'espree');
const findExpectCall = require('../../../lib/util/find-expect-call');

describe('find-expect-call util', function () {
it('Finds expect statements which are considered member expressions', function () {
var code = 'expect(true).to.be.ok;';
var ast = espree.parse(code);
var result = findExpectCall(ast.body[0].expression);
let code = 'expect(true).to.be.ok;';
let ast = espree.parse(code);
let result = findExpectCall(ast.body[0].expression);
expect(result).to.be.an('object');
});

it('Finds expect statements which are considered recursive call expressions', function () {
var code = 'expect(true).to.equal(true);';
var ast = espree.parse(code);
var result = findExpectCall(ast.body[0].expression);
let code = 'expect(true).to.equal(true);';
let ast = espree.parse(code);
let result = findExpectCall(ast.body[0].expression);
expect(result).to.be.an('object');
});
});