From c60a3e74b16dd46bad1a7a913da222ab40d908fb Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Mon, 10 Jun 2019 19:46:50 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix=20for=20ESLint=206?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- azure-pipelines.yml | 22 ++++++++++++++---- lib/rules/process-exit-as-throw.js | 23 ++++++++++++------- package.json | 1 + tests/lib/rules/no-deprecated-api.js | 9 ++------ tests/lib/rules/no-extraneous-import.js | 12 ++++++---- tests/lib/rules/no-missing-import.js | 9 ++++++-- tests/lib/rules/no-unpublished-import.js | 9 ++++++-- .../no-unsupported-features/es-builtins.js | 6 ++--- .../no-unsupported-features/es-syntax.js | 6 ++--- 9 files changed, 63 insertions(+), 34 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7359a9aa..8d849b69 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,8 +1,3 @@ -# Node.js -# Build a general Node.js project with npm. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - trigger: - master @@ -45,6 +40,23 @@ jobs: - script: npm run -s codecov displayName: Send Coverage + - job: tests_on_linux_with_eslint6 + displayName: Test ESLint 6 on Linux + pool: + vmImage: 'Ubuntu-16.04' + steps: + - task: NodeTool@0 + displayName: Install Node.js + inputs: + versionSpec: 12.x + # It needs twice due to npm's bug: https://npm.community/t/error-node-modules-staging-eslint-e7cf6846-node-modules-eslint + - script: npm install && npm install --no-save async eslint@^6.0.0-rc.0 && npm install --no-save async eslint@^6.0.0-rc.0 + displayName: Install Packages + - script: npm test + displayName: Test + - script: npm run -s codecov + displayName: Send Coverage + - job: tests_on_windows displayName: Test on Windows pool: diff --git a/lib/rules/process-exit-as-throw.js b/lib/rules/process-exit-as-throw.js index c7f5f6ac..3367d796 100644 --- a/lib/rules/process-exit-as-throw.js +++ b/lib/rules/process-exit-as-throw.js @@ -5,28 +5,35 @@ "use strict" const CodePathAnalyzer = safeRequire( + "eslint/lib/linter/code-path-analysis/code-path-analyzer", "eslint/lib/code-path-analysis/code-path-analyzer" ) -const CodePath = safeRequire("eslint/lib/code-path-analysis/code-path") const CodePathSegment = safeRequire( + "eslint/lib/linter/code-path-analysis/code-path-segment", "eslint/lib/code-path-analysis/code-path-segment" ) +const CodePath = safeRequire( + "eslint/lib/linter/code-path-analysis/code-path", + "eslint/lib/code-path-analysis/code-path" +) const originalLeaveNode = CodePathAnalyzer && CodePathAnalyzer.prototype.leaveNode /** * Imports a specific module. - * - * @param {string} moduleName - A module name to import. + * @param {...string} moduleNames - module names to import. * @returns {object|null} The imported object, or null. */ -function safeRequire(moduleName) { - try { - return require(moduleName) - } catch (_err) { - return null +function safeRequire(...moduleNames) { + for (const moduleName of moduleNames) { + try { + return require(moduleName) + } catch (_err) { + // Ignore. + } } + return null } /* istanbul ignore next */ diff --git a/package.json b/package.json index b05e8fc6..646f13b4 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "eslint": "^5.16.0", "eslint-plugin-node": "file:.", "fast-glob": "^2.2.6", + "globals": "^11.12.0", "mocha": "^6.1.4", "nyc": "^14.0.0", "opener": "^1.5.1", diff --git a/tests/lib/rules/no-deprecated-api.js b/tests/lib/rules/no-deprecated-api.js index 3b19884f..8ed812cc 100644 --- a/tests/lib/rules/no-deprecated-api.js +++ b/tests/lib/rules/no-deprecated-api.js @@ -4,7 +4,7 @@ */ "use strict" -const RuleTester = require("eslint/lib/testers/rule-tester") +const { RuleTester } = require("eslint") const rule = require("../../../lib/rules/no-deprecated-api") const ruleTester = new RuleTester() @@ -63,6 +63,7 @@ ruleTester.run("no-deprecated-api", rule, { { code: "import domain from 'domain/';", parserOptions: { sourceType: "module" }, + env: { es6: true }, }, // https://github.com/mysticatea/eslint-plugin-node/issues/55 @@ -948,12 +949,6 @@ ruleTester.run("no-deprecated-api", rule, { "'process.env.NODE_REPL_HISTORY_FILE' was deprecated since v4.0.0. Use 'NODE_REPL_HISTORY' instead.", ], }, - { - code: "import domain from 'domain';", - options: [{ version: "4.0.0" }], - parserOptions: { sourceType: "module" }, - errors: ["'domain' module was deprecated since v4.0.0."], - }, { code: "new Buffer()", diff --git a/tests/lib/rules/no-extraneous-import.js b/tests/lib/rules/no-extraneous-import.js index 5457683b..611b1c21 100644 --- a/tests/lib/rules/no-extraneous-import.js +++ b/tests/lib/rules/no-extraneous-import.js @@ -5,7 +5,7 @@ "use strict" const path = require("path") -const RuleTester = require("eslint").RuleTester +const { RuleTester } = require("eslint") const rule = require("../../../lib/rules/no-extraneous-import") /** @@ -17,9 +17,13 @@ function fixture(name) { return path.resolve(__dirname, "../../fixtures/no-extraneous", name) } -const tester = new RuleTester({ parserOptions: { sourceType: "module" } }) - -tester.run("no-extraneous-import", rule, { +const ruleTester = new RuleTester({ + parserOptions: { + ecmaVersion: 2015, + sourceType: "module", + }, +}) +ruleTester.run("no-extraneous-import", rule, { valid: [ { filename: fixture("dependencies/a.js"), diff --git a/tests/lib/rules/no-missing-import.js b/tests/lib/rules/no-missing-import.js index 7781bdd6..fef51990 100644 --- a/tests/lib/rules/no-missing-import.js +++ b/tests/lib/rules/no-missing-import.js @@ -5,7 +5,7 @@ "use strict" const path = require("path") -const RuleTester = require("eslint").RuleTester +const { RuleTester } = require("eslint") const rule = require("../../../lib/rules/no-missing-import") /** @@ -17,7 +17,12 @@ function fixture(name) { return path.resolve(__dirname, "../../fixtures/no-missing", name) } -const ruleTester = new RuleTester({ parserOptions: { sourceType: "module" } }) +const ruleTester = new RuleTester({ + parserOptions: { + ecmaVersion: 2015, + sourceType: "module", + }, +}) ruleTester.run("no-missing-import", rule, { valid: [ { diff --git a/tests/lib/rules/no-unpublished-import.js b/tests/lib/rules/no-unpublished-import.js index 608012c5..c82a159b 100644 --- a/tests/lib/rules/no-unpublished-import.js +++ b/tests/lib/rules/no-unpublished-import.js @@ -5,7 +5,7 @@ "use strict" const path = require("path") -const RuleTester = require("eslint").RuleTester +const { RuleTester } = require("eslint") const rule = require("../../../lib/rules/no-unpublished-import") /** @@ -17,7 +17,12 @@ function fixture(name) { return path.resolve(__dirname, "../../fixtures/no-unpublished", name) } -const ruleTester = new RuleTester({ parserOptions: { sourceType: "module" } }) +const ruleTester = new RuleTester({ + parserOptions: { + ecmaVersion: 2015, + sourceType: "module", + }, +}) ruleTester.run("no-unpublished-import", rule, { valid: [ { diff --git a/tests/lib/rules/no-unsupported-features/es-builtins.js b/tests/lib/rules/no-unsupported-features/es-builtins.js index f79164a6..3183d272 100644 --- a/tests/lib/rules/no-unsupported-features/es-builtins.js +++ b/tests/lib/rules/no-unsupported-features/es-builtins.js @@ -4,8 +4,8 @@ */ "use strict" -const RuleTester = require("eslint").RuleTester -const { configs } = require("@mysticatea/eslint-plugin") +const { RuleTester } = require("eslint") +const globals = require("globals") const rule = require("../../../../lib/rules/no-unsupported-features/es-builtins") /** @@ -56,7 +56,7 @@ function concat(patterns) { const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2018 }, - globals: Object.assign({}, configs.es2015.globals, configs.es2017.globals), + globals: globals.es2017, }) ruleTester.run( "no-unsupported-features/es-builtins", diff --git a/tests/lib/rules/no-unsupported-features/es-syntax.js b/tests/lib/rules/no-unsupported-features/es-syntax.js index 6aebb907..ea0b12cc 100644 --- a/tests/lib/rules/no-unsupported-features/es-syntax.js +++ b/tests/lib/rules/no-unsupported-features/es-syntax.js @@ -5,8 +5,8 @@ "use strict" const path = require("path") -const RuleTester = require("eslint").RuleTester -const { configs } = require("@mysticatea/eslint-plugin") +const { RuleTester } = require("eslint") +const globals = require("globals") const rule = require("../../../../lib/rules/no-unsupported-features/es-syntax") /** @@ -72,7 +72,7 @@ function concat(patterns) { const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2019 }, - globals: Object.assign({}, configs.es2015.globals, configs.es2017.globals), + globals: globals.es2017, }) ruleTester.run( "no-unsupported-features/es-syntax",