From ac930d0be03e8860fb357df8756527a268f70965 Mon Sep 17 00:00:00 2001 From: "Michael Bradley, Jr" Date: Fri, 14 Sep 2018 19:58:23 -0500 Subject: [PATCH] report error and exit if --node option value is not valid --- cmd/cmd.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cmd/cmd.js b/cmd/cmd.js index 6e1981b3c..bfed96883 100644 --- a/cmd/cmd.js +++ b/cmd/cmd.js @@ -262,20 +262,24 @@ class Cmd { } test() { - const urlRegexExp = /^(vm|embark|((ws|https?):\/\/([a-zA-Z0-9_.-]*):?([0-9]*)?))$/i; program .command('test [file]') - .option('-n , --node ', __('Node to connect to. Valid values are ["vm", "embark", ""]: \n') + + .option('-n , --node ', __('Node to connect to. Valid values are ["vm", "embark", ""]: \n') + ' vm - ' + __('Starts an Ethereum simulator (ganache) and runs the tests using the simulator') + '\n' + - ' embark - ' + __('Uses the node associated with an already running embark process') + '\n' + - ' ' + __(' - Connects to a running node available at the end point and uses it to run the tests'), - urlRegexExp, 'vm') + ' embark - ' + __('Uses the node associated with an already running embark process') + '\n' + + ' ' + __(' - Connects to a running node available at the end point and uses it to run the tests')) .option('-d , --gasDetails', __('When set, will print the gas cost for each contract deploy')) .option('-c , --coverage', __('When set, will generate the coverage after the tests')) .option('--locale [locale]', __('language to use (default: en)')) .option('--loglevel [loglevel]', __('level of logging to display') + ' ["error", "warn", "info", "debug", "trace"]', /^(error|warn|info|debug|trace)$/i, 'warn') .description(__('run tests')) .action(function(file, options) { + const node = options.node; + const urlRegexExp = /^(vm|embark|((ws|https?):\/\/([a-zA-Z0-9_.-]*):?([0-9]*)?))$/i; + if (node && !(node === 'embark' || node === 'vm' || node.match(urlRegexExp))) { + console.error(`invalid --node option: must be 'vm', 'embark' or a valid URL`.red); + process.exit(1); + } checkDeps(); i18n.setOrDetectLocale(options.locale); embark.runTests({file, loglevel: options.loglevel, gasDetails: options.gasDetails,