From a5020a6c2251bc6d3b3909fa5bf9f5c14b20ef40 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Thu, 26 Sep 2024 07:25:11 +1200 Subject: [PATCH] refactor: optimize rule tester implementation --- tests/src/rule-tester.js | 43 ++++++++++++++-------------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/tests/src/rule-tester.js b/tests/src/rule-tester.js index 9336262f4..103f2fd6f 100644 --- a/tests/src/rule-tester.js +++ b/tests/src/rule-tester.js @@ -25,35 +25,22 @@ class FlatCompatRuleTester { return config; } - const obj = { - languageOptions: { parserOptions: {} }, + const { parser, parserOptions = {}, languageOptions = {}, ...remainingConfig } = config; + const { ecmaVersion, sourceType, ...remainingParserOptions } = parserOptions; + const parserObj = typeof parser === 'string' ? require(parser) : parser; + + return { + ...remainingConfig, + languageOptions: { + ...languageOptions, + ...parserObj ? { parser: parserObj } : {}, + ...ecmaVersion ? { ecmaVersion } : {}, + ...sourceType ? { sourceType } : {}, + parserOptions: { + ...remainingParserOptions, + }, + }, }; - - for (const [key, value] of Object.entries(config)) { - if (key === 'parser') { - obj.languageOptions.parser = typeof value === 'string' ? require(value) : value; - - continue; - } - - if (key === 'parserOptions') { - for (const [option, val] of Object.entries(value)) { - if (option === 'ecmaVersion' || option === 'sourceType') { - obj.languageOptions[option] = val; - - continue; - } - - obj.languageOptions.parserOptions[option] = val; - } - - continue; - } - - obj[key] = value; - } - - return obj; } }