From 1e5a5cab795fe35cbbaf3d7d836d2905bf41307d Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@keylocation.sg> Date: Fri, 3 Nov 2017 07:43:26 +0100 Subject: [PATCH] refactor: move config globals inside functions (#1088) This was necessary when attempting to use jest mock all --- lib/config/massage.js | 15 +++++++++------ lib/config/migration.js | 11 +++++++---- lib/config/presets.js | 3 ++- lib/config/validation.js | 11 +++++++---- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/lib/config/massage.js b/lib/config/massage.js index b66c6f02e2..4ce2b20a8b 100644 --- a/lib/config/massage.js +++ b/lib/config/massage.js @@ -1,12 +1,7 @@ const deepcopy = require('deepcopy'); const options = require('./definitions').getOptions(); -const allowedStrings = []; -options.forEach(option => { - if (option.allowString) { - allowedStrings.push(option.name); - } -}); +let allowedStrings; module.exports = { massageConfig, @@ -14,6 +9,14 @@ module.exports = { // Returns a massaged config function massageConfig(config) { + if (!allowedStrings) { + allowedStrings = []; + options.forEach(option => { + if (option.allowString) { + allowedStrings.push(option.name); + } + }); + } const massagedConfig = deepcopy(config); for (const key of Object.keys(config)) { const val = config[key]; diff --git a/lib/config/migration.js b/lib/config/migration.js index a97f9c2797..afe19143d1 100644 --- a/lib/config/migration.js +++ b/lib/config/migration.js @@ -2,10 +2,7 @@ const later = require('later'); const deepcopy = require('deepcopy'); const options = require('./definitions').getOptions(); -const optionTypes = {}; -options.forEach(option => { - optionTypes[option.name] = option.type; -}); +let optionTypes; module.exports = { migrateConfig, @@ -27,6 +24,12 @@ const removedOptions = [ // Returns a migrated config function migrateConfig(config) { + if (!optionTypes) { + optionTypes = {}; + options.forEach(option => { + optionTypes[option.name] = option.type; + }); + } let isMigrated = false; const migratedConfig = deepcopy(config); for (const key of Object.keys(config)) { diff --git a/lib/config/presets.js b/lib/config/presets.js index 096fedcf66..703c39c5f5 100644 --- a/lib/config/presets.js +++ b/lib/config/presets.js @@ -161,7 +161,8 @@ async function getPreset(preset, logger) { logger.warn(`Cannot find preset ${preset}`); return {}; } - logger.debug({ presetConfig }, `Found preset ${preset}`); + logger.debug(`Found preset ${preset}`); + logger.trace({ presetConfig }); if (params) { const argMapping = {}; for (const [index, value] of params.entries()) { diff --git a/lib/config/validation.js b/lib/config/validation.js index 6329be067e..6e43cf17fa 100644 --- a/lib/config/validation.js +++ b/lib/config/validation.js @@ -1,16 +1,19 @@ const options = require('./definitions').getOptions(); const { hasValidSchedule } = require('../workers/branch/schedule'); -const optionTypes = {}; -options.forEach(option => { - optionTypes[option.name] = option.type; -}); +let optionTypes; module.exports = { validateConfig, }; function validateConfig(config) { + if (!optionTypes) { + optionTypes = {}; + options.forEach(option => { + optionTypes[option.name] = option.type; + }); + } let errors = []; let warnings = []; -- GitLab