From 0f6d0dcdf5adc30079a7379bbf605a4ef3887a85 Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Fri, 25 Oct 2019 06:16:35 +0900 Subject: [PATCH] Fix: CLIEngine#addPlugin reset lastConfigArrays (fixes #12425) (#12468) --- lib/cli-engine/cli-engine.js | 5 ++++- tests/lib/cli-engine/cli-engine.js | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/cli-engine/cli-engine.js b/lib/cli-engine/cli-engine.js index 17ed8d9f01b..8afd262708f 100644 --- a/lib/cli-engine/cli-engine.js +++ b/lib/cli-engine/cli-engine.js @@ -667,11 +667,14 @@ class CLIEngine { addPlugin(name, pluginObject) { const { additionalPluginPool, - configArrayFactory + configArrayFactory, + lastConfigArrays } = internalSlotsMap.get(this); additionalPluginPool.set(name, pluginObject); configArrayFactory.clearCache(); + lastConfigArrays.length = 1; + lastConfigArrays[0] = configArrayFactory.getConfigArrayForFile(); } /** diff --git a/tests/lib/cli-engine/cli-engine.js b/tests/lib/cli-engine/cli-engine.js index 7c2ce871cca..2cdc81301bf 100644 --- a/tests/lib/cli-engine/cli-engine.js +++ b/tests/lib/cli-engine/cli-engine.js @@ -4022,6 +4022,14 @@ describe("CLIEngine", () => { assert(engine.getRules().has("node/no-deprecated-api"), "node/no-deprecated-api is present"); }); + + it("should expose the rules of the plugin that is added by 'addPlugin'.", () => { + const engine = new CLIEngine({ plugins: ["foo"] }); + + engine.addPlugin("foo", require("eslint-plugin-node")); + + assert(engine.getRules().has("foo/no-deprecated-api"), "foo/no-deprecated-api is present"); + }); }); describe("resolveFileGlobPatterns", () => {