jenkins-bot has submitted this change and it was merged. Change subject: Factor out getConfigPromise() method. ......................................................................
Factor out getConfigPromise() method. Use `Promise.method` to ensure that any synchronous exceptions thrown (either intentionally or by programmer error) get turned into rejected Promises. This also lets us use synchronous return/throw in the body for readability. Using return/throw also makes the control flow clearer, ensuring that future maintainers don't have to worry about multiple assignment. Change-Id: I4d7bf027b9cc09b24859f6cf9dae3290e6e2530f --- M lib/mediawiki.parser.environment.js 1 file changed, 35 insertions(+), 34 deletions(-) Approvals: Arlolra: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/mediawiki.parser.environment.js b/lib/mediawiki.parser.environment.js index c41d317..34326c7 100644 --- a/lib/mediawiki.parser.environment.js +++ b/lib/mediawiki.parser.environment.js @@ -278,45 +278,46 @@ var nothingToDo = {}; // unique marker value var parsoid = env.conf.parsoid; - var getConfigPromise, uri; - if (!prefix) { - getConfigPromise = Promise.reject(new Error('Wiki prefix not provided')); - } else { - uri = parsoid.interwikiMap.get(prefix); - if (!uri) { - // SSS: Ugh! Looks like parser tests use a prefix - // that is not part of the interwikiMap -- so we - // cannot crash with an error. Hence defaulting - // to enwiki api which is quite odd. Does the - // interwikiMap need updating or is this use-case - // valid outside of parserTests?? - env.log('error', 'Did not find api uri for ' + - prefix + '; defaulting to enwiki'); - uri = parsoid.interwikiMap.get('enwiki'); - } - parsoid.apiURI = uri; - - if (env.confCache[prefix]) { - env.conf.wiki = env.confCache[prefix]; - getConfigPromise = Promise.resolve(nothingToDo); - } else if (parsoid.fetchConfig) { - getConfigPromise = ConfigRequest - .promise(uri, env, env.getAPIProxy(prefix)); + var uri; + var getConfigPromise = Promise.method(function() { + if (!prefix) { + throw new Error('Wiki prefix not provided'); } else { - // Load the config from cached config on disk - var localConfigFile = './baseconfig/' + prefix + '.json'; - var localConfig = require(localConfigFile); - if (localConfig && localConfig.query) { - getConfigPromise = Promise.resolve(localConfig.query); + uri = parsoid.interwikiMap.get(prefix); + if (!uri) { + // SSS: Ugh! Looks like parser tests use a prefix + // that is not part of the interwikiMap -- so we + // cannot crash with an error. Hence defaulting + // to enwiki api which is quite odd. Does the + // interwikiMap need updating or is this use-case + // valid outside of parserTests?? + env.log('error', 'Did not find api uri for ' + + prefix + '; defaulting to enwiki'); + uri = parsoid.interwikiMap.get('enwiki'); + } + parsoid.apiURI = uri; + + if (env.confCache[prefix]) { + env.conf.wiki = env.confCache[prefix]; + return nothingToDo; + } else if (parsoid.fetchConfig) { + return ConfigRequest + .promise(uri, env, env.getAPIProxy(prefix)); } else { - getConfigPromise = Promise.reject( - new Error('Could not read valid config from file: ' + - localConfigFile)); + // Load the config from cached config on disk + var localConfigFile = './baseconfig/' + prefix + '.json'; + var localConfig = require(localConfigFile); + if (localConfig && localConfig.query) { + return localConfig.query; + } else { + throw new Error('Could not read valid config from file: ' + + localConfigFile); + } } } - } + }); - return getConfigPromise.then(function(resultConf) { + return getConfigPromise().then(function(resultConf) { if (resultConf === nothingToDo) { return; } env.conf.wiki = new WikiConfig(env, resultConf, prefix, uri, env.getAPIProxy(prefix)); -- To view, visit https://gerrit.wikimedia.org/r/206481 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4d7bf027b9cc09b24859f6cf9dae3290e6e2530f Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Cscott <canan...@wikimedia.org> Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org> Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits