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

View File

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

View File

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

View File

@ -4,7 +4,7 @@ const eslint = require("eslint");
const path = require("path"); const path = require("path");
const unpad = require("dedent"); const unpad = require("dedent");
const parser = require("../.."); const parser = require("../");
function verifyAndAssertMessagesWithSpecificESLint( function verifyAndAssertMessagesWithSpecificESLint(
code, code,
@ -26,7 +26,13 @@ function verifyAndAssertMessagesWithSpecificESLint(
ecmaFeatures: { ecmaFeatures: {
globalReturn: true, globalReturn: true,
}, },
babelOptions: {
configFile: path.resolve(
__dirname,
"./fixtures/config/babel.config.js"
),
}, },
}
}; };
if (overrideConfig) { if (overrideConfig) {
@ -1162,7 +1168,7 @@ describe("verify", () => {
babelOptions: { babelOptions: {
configFile: path.resolve( configFile: path.resolve(
__dirname, __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" "url": "https://github.com/nicolo-ribaudo"
}, },
"main": "src/index.js", "main": "src/index.js",
"scripts": {
"test": "mocha tests --recursive"
},
"devDependencies": { "devDependencies": {
"eslint": "^5.9.0", "eslint": "^5.9.0"
"mocha": "^5.2.0"
}, },
"engines": { "engines": {
"node": ">=8.0.0" "node": ">=8.0.0"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -95,9 +95,11 @@
"packages/*/src/**/*.mjs", "packages/*/src/**/*.mjs",
"packages/*/src/**/*.js", "packages/*/src/**/*.js",
"codemods/*/src/**/*.mjs", "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": [ "testPathIgnorePatterns": [
"/node_modules/", "/node_modules/",
"/test/fixtures/", "/test/fixtures/",

View File

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