Fix exception handling around unrecognised options

This commit is contained in:
Patrick Niklaus 2016-07-25 19:25:16 +02:00
parent 0b868969be
commit e83905b783
No known key found for this signature in database
GPG Key ID: E426891B5F978B1B
4 changed files with 50 additions and 33 deletions

View File

@ -7,7 +7,7 @@ Feature: osrm-routed command line options: invalid options
Scenario: osrm-routed - Non-existing option
When I run "osrm-routed --fly-me-to-the-moon"
Then stdout should be empty
And stderr should contain "exception"
And stderr should contain "unrecognised"
And stderr should contain "fly-me-to-the-moon"
And it should exit with code 1

View File

@ -77,11 +77,19 @@ return_code parseArguments(int argc, char *argv[], contractor::ContractorConfig
// parse command line options
boost::program_options::variables_map option_variables;
boost::program_options::store(boost::program_options::command_line_parser(argc, argv)
.options(cmdline_options)
.positional(positional_options)
.run(),
option_variables);
try
{
boost::program_options::store(boost::program_options::command_line_parser(argc, argv)
.options(cmdline_options)
.positional(positional_options)
.run(),
option_variables);
}
catch(boost::program_options::error& e)
{
util::SimpleLogger().Write(logWARNING) << "[error] " << e.what();
return return_code::fail;
}
if (option_variables.count("version"))
{

View File

@ -73,40 +73,41 @@ return_code parseArguments(int argc, char *argv[], extractor::ExtractorConfig &e
visible_options.add(generic_options).add(config_options);
// parse command line options
boost::program_options::variables_map option_variables;
try
{
boost::program_options::variables_map option_variables;
boost::program_options::store(boost::program_options::command_line_parser(argc, argv)
.options(cmdline_options)
.positional(positional_options)
.run(),
option_variables);
if (option_variables.count("version"))
{
util::SimpleLogger().Write() << OSRM_VERSION;
return return_code::exit;
}
if (option_variables.count("help"))
{
util::SimpleLogger().Write() << visible_options;
return return_code::exit;
}
boost::program_options::notify(option_variables);
if (!option_variables.count("input"))
{
util::SimpleLogger().Write() << visible_options;
return return_code::exit;
}
}
catch (std::exception &e)
catch (boost::program_options::error &e)
{
util::SimpleLogger().Write(logWARNING) << e.what();
util::SimpleLogger().Write(logWARNING) << "[error] " << e.what();
return return_code::fail;
}
if (option_variables.count("version"))
{
util::SimpleLogger().Write() << OSRM_VERSION;
return return_code::exit;
}
if (option_variables.count("help"))
{
util::SimpleLogger().Write() << visible_options;
return return_code::exit;
}
boost::program_options::notify(option_variables);
if (!option_variables.count("input"))
{
util::SimpleLogger().Write() << visible_options;
return return_code::exit;
}
return return_code::ok;
}

View File

@ -122,11 +122,19 @@ inline unsigned generateServerProgramOptions(const int argc,
// parse command line options
boost::program_options::variables_map option_variables;
boost::program_options::store(boost::program_options::command_line_parser(argc, argv)
.options(cmdline_options)
.positional(positional_options)
.run(),
option_variables);
try
{
boost::program_options::store(boost::program_options::command_line_parser(argc, argv)
.options(cmdline_options)
.positional(positional_options)
.run(),
option_variables);
}
catch(boost::program_options::error& e)
{
util::SimpleLogger().Write(logWARNING) << "[error] " << e.what();
return INIT_FAILED;
}
if (option_variables.count("version"))
{