From 78a13930fb7335e664c60c361af87bb1ed8e7450 Mon Sep 17 00:00:00 2001 From: eric wang Date: Sun, 21 Jun 2020 17:44:30 +1000 Subject: [PATCH] hide linterMapSymbol --- lib/rule-tester/index.js | 4 +--- lib/rule-tester/rule-tester.js | 25 +++++++++++++++++++++---- tests/lib/rule-tester/rule-tester.js | 7 ++++--- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/lib/rule-tester/index.js b/lib/rule-tester/index.js index f52d14027c5..35191635185 100644 --- a/lib/rule-tester/index.js +++ b/lib/rule-tester/index.js @@ -1,5 +1,3 @@ "use strict"; -module.exports = { - RuleTester: require("./rule-tester") -}; +module.exports = require("./rule-tester"); diff --git a/lib/rule-tester/rule-tester.js b/lib/rule-tester/rule-tester.js index a891d127001..ad4b87087b0 100644 --- a/lib/rule-tester/rule-tester.js +++ b/lib/rule-tester/rule-tester.js @@ -100,6 +100,12 @@ const espreePath = require.resolve("espree"); * @property {number} [endColumn] The 1-based column number of the reported end location. */ +/** + * The private data for `RuleTester` instance. + * @typedef {Object} RuleTesterInternalSlots + * @property {symbol} injectedLinterMapSymbol symbol key for injected linterMap + */ + //------------------------------------------------------------------------------ // Private Members //------------------------------------------------------------------------------ @@ -312,6 +318,14 @@ function describeDefaultHandler(text, method) { return method.call(this); } +/** + * The map to store private data. + * @type {RuleTesterInternalSlots} + */ +const internalSlotsMap = { + injectedLinterMapSymbol: Symbol("linterMap") +}; + class RuleTester { /** @@ -417,9 +431,9 @@ class RuleTester { * @param {{ * valid: (ValidTestCase | string)[], * invalid: InvalidTestCase[], - * linterMapDevOnly?: Map + * Symbol("linterMap")?: Map * }} test The collection of tests to run. - * test.linterMapDevOnly is for testing purpose + * test.[Symbol.for("linterMap")] is for testing purpose * @returns {void} */ run(ruleName, rule, test) { @@ -438,7 +452,7 @@ class RuleTester { * Injection of value in `test` is for test purpose. * @type {Map} */ - const { linterMapDevOnly: linterMap = new Map() } = test; + const { [internalSlotsMap.injectedLinterMapSymbol]: linterMap = new Map() } = test; requiredScenarios.forEach(scenarioType => { if (lodash.isNil(test[scenarioType])) { @@ -912,4 +926,7 @@ class RuleTester { RuleTester[DESCRIBE] = RuleTester[IT] = null; -module.exports = RuleTester; +module.exports = { + RuleTester, + internalSlotsMap +}; diff --git a/tests/lib/rule-tester/rule-tester.js b/tests/lib/rule-tester/rule-tester.js index 929f903eb2f..c755727c093 100644 --- a/tests/lib/rule-tester/rule-tester.js +++ b/tests/lib/rule-tester/rule-tester.js @@ -9,7 +9,7 @@ //------------------------------------------------------------------------------ const sinon = require("sinon"), EventEmitter = require("events"), - { RuleTester } = require("../../../lib/rule-tester"), + { RuleTester, internalSlotsMap } = require("../../../lib/rule-tester"), { Linter } = require("../../../lib/linter"), assert = require("chai").assert, nodeAssert = require("assert"), @@ -759,7 +759,8 @@ describe("RuleTester", () => { [undefined, linter] ]); - // ruleTester = new RuleTester({ linterMapDevOnly: linterMap }); + const { injectedLinterMapSymbol } = internalSlotsMap; + ruleTester = new RuleTester(); ruleTester.run("no-eval", require("../../fixtures/testers/rule-tester/no-eval"), { valid: [ @@ -774,7 +775,7 @@ describe("RuleTester", () => { errors: [{ line: 1 }] } ], - linterMapDevOnly: linterMap + [injectedLinterMapSymbol]: linterMap }); assert.strictEqual(spy.args[1][1].parser, require.resolve("esprima")); });