Skip to content

Commit

Permalink
🐛 fix for ESLint 6 (#169)
Browse files Browse the repository at this point in the history
  • Loading branch information
mysticatea committed Jun 10, 2019
1 parent fe73872 commit 5b3f815
Show file tree
Hide file tree
Showing 9 changed files with 63 additions and 34 deletions.
22 changes: 17 additions & 5 deletions 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

Expand Down Expand Up @@ -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:
Expand Down
23 changes: 15 additions & 8 deletions lib/rules/process-exit-as-throw.js
Expand Up @@ -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 */
Expand Down
1 change: 1 addition & 0 deletions package.json
Expand Up @@ -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",
Expand Down
9 changes: 2 additions & 7 deletions tests/lib/rules/no-deprecated-api.js
Expand Up @@ -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()
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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()",
Expand Down
12 changes: 8 additions & 4 deletions tests/lib/rules/no-extraneous-import.js
Expand Up @@ -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")

/**
Expand All @@ -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"),
Expand Down
9 changes: 7 additions & 2 deletions tests/lib/rules/no-missing-import.js
Expand Up @@ -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")

/**
Expand All @@ -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: [
{
Expand Down
9 changes: 7 additions & 2 deletions tests/lib/rules/no-unpublished-import.js
Expand Up @@ -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")

/**
Expand All @@ -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: [
{
Expand Down
6 changes: 3 additions & 3 deletions tests/lib/rules/no-unsupported-features/es-builtins.js
Expand Up @@ -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")

/**
Expand Down Expand Up @@ -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",
Expand Down
6 changes: 3 additions & 3 deletions tests/lib/rules/no-unsupported-features/es-syntax.js
Expand Up @@ -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")

/**
Expand Down Expand Up @@ -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",
Expand Down

0 comments on commit 5b3f815

Please sign in to comment.