From c2fa788eb798325e4ecddfb3e29fb6d823bceffb Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Thu, 5 Sep 2019 11:31:22 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9A=92=20revive=20the=20tests=20of=20depreca?= =?UTF-8?q?ted=20rules?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/rules/no-hide-core-modules.js | 18 +- .../node_modules/{util.js => util/index.js} | 0 .../node_modules/{util.js => util/index.js} | 0 tests/lib/rules/no-hide-core-modules.js | 198 ++++++++++++++++++ 4 files changed, 208 insertions(+), 8 deletions(-) rename tests/fixtures/no-hide-core-modules/indirect-thirdparty/node_modules/{util.js => util/index.js} (100%) rename tests/fixtures/no-hide-core-modules/thirdparty/node_modules/{util.js => util/index.js} (100%) create mode 100644 tests/lib/rules/no-hide-core-modules.js diff --git a/lib/rules/no-hide-core-modules.js b/lib/rules/no-hide-core-modules.js index 6f26c372..4ace164d 100644 --- a/lib/rules/no-hide-core-modules.js +++ b/lib/rules/no-hide-core-modules.js @@ -110,8 +110,10 @@ module.exports = { ), { "Program:exit"() { - for (const target of targets.filter(t => - CORE_MODULES.has(t.moduleName) + for (const target of targets.filter( + t => + CORE_MODULES.has(t.moduleName) && + t.moduleName === t.name )) { const name = target.moduleName const allowed = @@ -123,12 +125,12 @@ module.exports = { continue } - const resolved = resolve.sync(name, { - basedir: dirPath, - }) - const isCore = resolved === name - - if (isCore) { + let resolved = "" + try { + resolved = resolve.sync(`${name}/`, { + basedir: dirPath, + }) + } catch (_error) { continue } diff --git a/tests/fixtures/no-hide-core-modules/indirect-thirdparty/node_modules/util.js b/tests/fixtures/no-hide-core-modules/indirect-thirdparty/node_modules/util/index.js similarity index 100% rename from tests/fixtures/no-hide-core-modules/indirect-thirdparty/node_modules/util.js rename to tests/fixtures/no-hide-core-modules/indirect-thirdparty/node_modules/util/index.js diff --git a/tests/fixtures/no-hide-core-modules/thirdparty/node_modules/util.js b/tests/fixtures/no-hide-core-modules/thirdparty/node_modules/util/index.js similarity index 100% rename from tests/fixtures/no-hide-core-modules/thirdparty/node_modules/util.js rename to tests/fixtures/no-hide-core-modules/thirdparty/node_modules/util/index.js diff --git a/tests/lib/rules/no-hide-core-modules.js b/tests/lib/rules/no-hide-core-modules.js new file mode 100644 index 00000000..057635ec --- /dev/null +++ b/tests/lib/rules/no-hide-core-modules.js @@ -0,0 +1,198 @@ +/** + * @author Toru Nagashima + * @copyright 2016 Toru Nagashima. All rights reserved. + * See LICENSE file in root directory for full license. + * + * @deprecated since v4.2.0 + * This rule was based on an invalid assumption. + * No meaning. + */ +"use strict" + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const path = require("path") +const RuleTester = require("eslint").RuleTester +const rule = require("../../../lib/rules/no-hide-core-modules") + +//------------------------------------------------------------------------------ +// Helpers +//------------------------------------------------------------------------------ + +const THIRD_PERTY = path.resolve( + __dirname, + "../../fixtures/no-hide-core-modules/thirdparty/test.js" +) +const NO_THIRD_PERTY = path.resolve( + __dirname, + "../../fixtures/no-hide-core-modules/no-thirdparty/test.js" +) +const INDIRECT_THIRD_PERTY = path.resolve( + __dirname, + "../../fixtures/no-hide-core-modules/indirect-thirdparty/test.js" +) + +//------------------------------------------------------------------------------ +// Tests +//------------------------------------------------------------------------------ + +const tester = new RuleTester({ + parserOptions: { + ecmaVersion: 2015, + sourceType: "module", + }, + globals: { require: false }, +}) + +tester.run("no-hide-core-modules", rule, { + valid: [ + "require('util')", + { + filename: NO_THIRD_PERTY, + code: "require('util')", + }, + { + filename: THIRD_PERTY, + code: "require('util')", + options: [{ allow: ["util"] }], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "require('util')", + options: [{ allow: ["util"] }], + }, + { + filename: THIRD_PERTY, + code: "require('util')", + options: [{ ignoreDirectDependencies: true }], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "require('util')", + options: [{ ignoreIndirectDependencies: true }], + }, + + "import util from 'util'", + { + filename: NO_THIRD_PERTY, + code: "import util from 'util'", + }, + { + filename: THIRD_PERTY, + code: "import util from 'util'", + options: [{ allow: ["util"] }], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "import util from 'util'", + options: [{ allow: ["util"] }], + }, + { + filename: THIRD_PERTY, + code: "import util from 'util'", + options: [{ ignoreDirectDependencies: true }], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "import util from 'util'", + options: [{ ignoreIndirectDependencies: true }], + }, + ], + invalid: [ + { + filename: THIRD_PERTY, + code: "require('util')", + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: THIRD_PERTY, + code: "require('util')", + options: [{ allow: ["path"] }], + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: THIRD_PERTY, + code: "require('util')", + options: [{ ignoreIndirectDependencies: true }], + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "require('util')", + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "require('util')", + options: [{ allow: ["path"] }], + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "require('util')", + options: [{ ignoreDirectDependencies: true }], + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + + { + filename: THIRD_PERTY, + code: "import util from 'util'", + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: THIRD_PERTY, + code: "import util from 'util'", + options: [{ allow: ["path"] }], + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: THIRD_PERTY, + code: "import util from 'util'", + options: [{ ignoreIndirectDependencies: true }], + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "import util from 'util'", + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "import util from 'util'", + options: [{ allow: ["path"] }], + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + { + filename: INDIRECT_THIRD_PERTY, + code: "import util from 'util'", + options: [{ ignoreDirectDependencies: true }], + errors: [ + "Unexpected import of third-party module 'node_modules/util/index.js'.", + ], + }, + ], +})