Mocha to jest migration for eslint packages (#10716)

* migrated mocha to jest

* migrated mocha to jest - 2

* migrated mocha to jest - removed preversion hook from script

* migrated mocha to jest - 3

* migrated mocha to jest - 4

* cleanup

* review

* review
This commit is contained in:
Raja Sekar 2019-11-16 12:32:19 +01:00 committed by Nicolò Ribaudo
parent bcd181f051
commit f087cf842f
21 changed files with 63 additions and 58 deletions

View File

@ -14,7 +14,6 @@
},
"homepage": "https://github.com/babel/babel-eslint",
"scripts": {
"test": "cd test && mocha specs && cd -",
"changelog": "git log `git describe --tags --abbrev=0`..HEAD --pretty=format:' * %s (%an)' | grep -v 'Merge pull request'"
},
"engines": {
@ -50,7 +49,6 @@
"@babel/preset-react": "^7.0.0",
"dedent": "^0.7.0",
"eslint": "^6.0.1",
"espree": "^6.0.0",
"mocha": "^6.1.4"
"espree": "^6.0.0"
}
}

View File

@ -1,11 +1,19 @@
"use strict";
const assert = require("assert");
const babelEslint = require("../..");
const path = require("path");
const babelEslint = require("../");
const espree = require("espree");
const escope = require("eslint-scope");
const unpad = require("dedent");
const assertImplementsAST = require("../helpers/assert-implements-ast");
const assertImplementsAST = require("./helpers/assert-implements-ast");
const babelOptions = {
configFile: path.resolve(
__dirname,
"./fixtures/config/babel.config.js"
),
}
function parseAndAssertSame(code) {
code = unpad(code);
@ -30,6 +38,7 @@ function parseAndAssertSame(code) {
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assertImplementsAST(esAST, babylonAST);
}
@ -40,15 +49,11 @@ describe("babylon-to-espree", () => {
const esAST = babelEslint.parseForESLint("`test`", {
eslintScopeManager: true,
eslintVisitorKeys: true,
babelOptions,
}).ast;
assert.doesNotThrow(
() => {
escope.analyze(esAST);
},
TypeError,
"Should allow no options argument."
);
expect(() => {
escope.analyze(esAST)
}).not.toThrow(new TypeError('Should allow no options argument.'));
});
});
@ -243,6 +248,7 @@ describe("babylon-to-espree", () => {
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assert.strictEqual(babylonAST.tokens[1].type, "Punctuator");
});
@ -253,6 +259,7 @@ describe("babylon-to-espree", () => {
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assert.strictEqual(babylonAST.tokens[1].type, "Punctuator");
});
@ -263,6 +270,7 @@ describe("babylon-to-espree", () => {
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assert.strictEqual(babylonAST.tokens[1].type, "Punctuator");
});
@ -273,6 +281,7 @@ describe("babylon-to-espree", () => {
const babylonAST = babelEslint.parseForESLint(code, {
eslintVisitorKeys: true,
eslintScopeManager: true,
babelOptions,
}).ast;
assert.strictEqual(babylonAST.tokens[3].type, "Punctuator");
assert.strictEqual(babylonAST.tokens[3].value, "#");

View File

@ -1,16 +1,15 @@
"use strict";
const assert = require("assert");
const eslint = require("eslint");
const fs = require("fs");
const path = require("path");
const parser = require("../..");
const parser = require("../");
eslint.linter.defineParser("current-babel-eslint", parser);
const paths = {
fixtures: path.join(__dirname, "..", "fixtures", "rules"),
fixtures: path.join(__dirname, "fixtures", "rules"),
};
const encoding = "utf8";
@ -71,7 +70,7 @@ function strictSuite() {
},
(err, report) => {
if (err) return done(err);
assert(report[0].ruleId === ruleId);
expect(report[0].ruleId).toBe(ruleId);
done();
}
);
@ -95,7 +94,7 @@ function strictSuite() {
},
(err, report) => {
if (err) return done(err);
assert(!report.length);
expect(report.length).toBe(0);
done();
}
);
@ -111,7 +110,7 @@ function strictSuite() {
(err, report) => {
if (err) return done(err);
[0, 1].forEach(i => {
assert(report[i].ruleId === ruleId);
expect(report[0].ruleId).toBe(ruleId);
});
done();
}
@ -127,13 +126,12 @@ function strictSuite() {
},
(err, report) => {
if (err) return done(err);
assert(report[0].ruleId === ruleId);
expect(report[0].ruleId).toBe(ruleId);
// This is to make sure the test fails prior to adapting Babel AST
// directive representation to ESLint format. Otherwise it reports an
// error for missing global directive that masquerades as the expected
// result of the previous assertion.
assert(report[0].nodeType !== "Program");
expect(report[0].nodeType).not.toBe("Program");
done();
}
);
@ -148,7 +146,7 @@ function strictSuite() {
},
(err, report) => {
if (err) return done(err);
assert(report[0].ruleId === ruleId);
expect(report[0].ruleId).toBe(ruleId);
done();
}
);
@ -171,7 +169,7 @@ function strictSuite() {
},
(err, report) => {
if (err) return done(err);
assert(!report.length);
expect(report.length).toBe(0);
done();
}
);
@ -187,7 +185,7 @@ function strictSuite() {
(err, report) => {
if (err) return done(err);
[0, 1].forEach(i => {
assert(report[i].ruleId === ruleId);
expect(report[i].ruleId).toBe(ruleId);
});
done();
}
@ -203,7 +201,7 @@ function strictSuite() {
},
(err, report) => {
if (err) return done(err);
assert(report[0].ruleId === ruleId);
expect(report[0].ruleId).toBe(ruleId);
done();
}
);
@ -218,8 +216,8 @@ function strictSuite() {
},
(err, report) => {
if (err) return done(err);
assert(report[0].ruleId === ruleId);
assert(report[0].nodeType.indexOf("Function") === -1);
expect(report[0].ruleId).toBe(ruleId);
expect(report[0].nodeType.indexOf("Function")).toBe(-1);
done();
}
);
@ -231,10 +229,10 @@ function strictSuite() {
describe("https://github.com/babel/babel-eslint/issues/558", () => {
it("doesn't crash with eslint-plugin-import", () => {
const engine = new eslint.CLIEngine({ ignore: false });
engine.executeOnFiles([
"fixtures/eslint-plugin-import/a.js",
"fixtures/eslint-plugin-import/b.js",
"fixtures/eslint-plugin-import/c.js",
]);
const files = ['a.js', 'b.js', 'c.js'];
let fileWithPath = files.map(file =>
path.resolve(__dirname, `./fixtures/eslint-plugin-import/${file}`));
engine.executeOnFiles(fileWithPath);
});
});

View File

@ -4,7 +4,7 @@ const eslint = require("eslint");
const path = require("path");
const unpad = require("dedent");
const parser = require("../..");
const parser = require("../");
function verifyAndAssertMessagesWithSpecificESLint(
code,
@ -26,7 +26,13 @@ function verifyAndAssertMessagesWithSpecificESLint(
ecmaFeatures: {
globalReturn: true,
},
babelOptions: {
configFile: path.resolve(
__dirname,
"./fixtures/config/babel.config.js"
),
},
}
};
if (overrideConfig) {
@ -1162,7 +1168,7 @@ describe("verify", () => {
babelOptions: {
configFile: path.resolve(
__dirname,
"../fixtures/config/babel.config.decorators-legacy.js"
"./fixtures/config/babel.config.decorators-legacy.js"
),
},
},

View File

@ -14,12 +14,8 @@
"url": "https://github.com/nicolo-ribaudo"
},
"main": "src/index.js",
"scripts": {
"test": "mocha tests --recursive"
},
"devDependencies": {
"eslint": "^5.9.0",
"mocha": "^5.2.0"
"eslint": "^5.9.0"
},
"engines": {
"node": ">=8.0.0"

View File

@ -3,9 +3,6 @@
"version": "5.3.0",
"description": "an eslint rule plugin companion to babel-eslint",
"main": "index.js",
"scripts": {
"test": "mocha ./tests/rules/*.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/babel/eslint-plugin-babel.git"
@ -36,7 +33,6 @@
"devDependencies": {
"babel-eslint": "^8.2.2",
"eslint": "^4.19.1",
"lodash.clonedeep": "^4.5.0",
"mocha": "^5.2.0"
"lodash.clonedeep": "^4.5.0"
}
}

View File

@ -10,7 +10,7 @@
//------------------------------------------------------------------------------
const rule = require("../../rules/camelcase"),
RuleTester = require("../RuleTester");
RuleTester = require("../helpers/RuleTester");
//------------------------------------------------------------------------------
// Tests

View File

@ -4,7 +4,7 @@
*/
var rule = require('../../rules/new-cap'),
RuleTester = require('../RuleTester');
RuleTester = require("../helpers/RuleTester");
var ruleTester = new RuleTester();
ruleTester.run('babel/new-cap', rule, {

View File

@ -10,8 +10,8 @@
//------------------------------------------------------------------------------
const cloneDeep = require("lodash.clonedeep");
const rule = require("../../rules/no-invalid-this");
const RuleTester = require("../RuleTester");
const rule = require("../../rules/no-invalid-this"),
RuleTester = require("../helpers/RuleTester");
//------------------------------------------------------------------------------
// Helpers

View File

@ -10,7 +10,7 @@
//------------------------------------------------------------------------------
const rule = require("../../rules/no-unused-expressions"),
RuleTester = require("../RuleTester");
RuleTester = require("../helpers/RuleTester");
//------------------------------------------------------------------------------
// Tests

View File

@ -7,7 +7,7 @@
*/
var rule = require('../../rules/object-curly-spacing'),
RuleTester = require('../RuleTester');
RuleTester = require("../helpers/RuleTester");
var ruleTester = new RuleTester();
ruleTester.run('babel/object-curly-spacing', rule, {

View File

@ -1,5 +1,5 @@
var rule = require('../../rules/quotes'),
RuleTester = require('../RuleTester');
RuleTester = require("../helpers/RuleTester");
var ruleTester = new RuleTester();
ruleTester.run('babel/quotes', rule, {

View File

@ -11,7 +11,7 @@
//------------------------------------------------------------------------------
const rule = require("../../rules/semi"),
RuleTester = require("../RuleTester");
RuleTester = require("../helpers/RuleTester");
const ruleTester = new RuleTester();

View File

@ -10,7 +10,7 @@
//------------------------------------------------------------------------------
const rule = require("../../rules/valid-typeof"),
RuleTester = require("../RuleTester");
RuleTester = require("../helpers/RuleTester");
//------------------------------------------------------------------------------
// Tests

View File

@ -95,9 +95,11 @@
"packages/*/src/**/*.mjs",
"packages/*/src/**/*.js",
"codemods/*/src/**/*.mjs",
"codemods/*/src/**/*.js"
"codemods/*/src/**/*.js",
"eslint/*/src/**/*.mjs",
"eslint/*/src/**/*.js"
],
"testRegex": "./(packages|codemods)/[^/]+/test/.+\\.m?js$",
"testRegex": "./(packages|codemods|eslint)/[^/]+/test/.+\\.m?js$",
"testPathIgnorePatterns": [
"/node_modules/",
"/test/fixtures/",

View File

@ -20,7 +20,7 @@ if [ -n "$TEST_GREP" ]; then
fi
if [ -n "$TEST_ONLY" ]; then
jestArgs+=("(packages|codemods)/.*$TEST_ONLY.*/test")
jestArgs+=("(packages|codemods|eslint)/.*$TEST_ONLY.*/test")
fi
$node node_modules/jest/bin/jest.js "${jestArgs[@]}"