[
https://issues.apache.org/jira/browse/CLI-201?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Emmanuel Bourg resolved CLI-201.
--------------------------------
Resolution: Fixed
> Default options may be partially processed
> ------------------------------------------
>
> Key: CLI-201
> URL: https://issues.apache.org/jira/browse/CLI-201
> Project: Commons CLI
> Issue Type: Bug
> Components: Parser
> Affects Versions: 1.1
> Reporter: Emmanuel Bourg
> Priority: Minor
> Fix For: 1.3
>
>
> The Properties instance passed to the Parser.parse() method to initialize the
> default options may be partially processed. This happens when the properties
> contains an option that doesn't accept arguments and has a default value that
> isn't evaluated to "true". When this case occurs the processing of the
> properties is stopped and the remaining options are never handled.
> This is caused by the break statement in
> Parser.processProperties(Properties), a continue statement should have been
> used instead.
> The related test in ValueTest is also wrong, there are two assertions that
> need to be changed:
> {code}
> Options opts = new Options();
> opts.addOption("a", false, "toggle -a");
> opts.addOption("c", "c", false, "toggle -c");
> opts.addOption(OptionBuilder.hasOptionalArg().create('e'));
> properties = new Properties();
> properties.setProperty( "a", "false" );
> properties.setProperty( "c", "no" );
> properties.setProperty( "e", "0" );
> cmd = parser.parse(opts, null, properties);
> assertTrue( !cmd.hasOption("a") );
> assertTrue( !cmd.hasOption("c") );
> assertTrue( !cmd.hasOption("e") ); // Wrong, this option accepts an argument
> and should receive the value "0"
> {code}
> and the second one:
> {code}
> properties = new Properties();
> properties.setProperty( "a", "just a string" );
> properties.setProperty( "e", "" );
> cmd = parser.parse(opts, null, properties);
> assertTrue( !cmd.hasOption("a") );
> assertTrue( !cmd.hasOption("c") );
> assertTrue( !cmd.hasOption("e") ); // Wrong, this option accepts an argument
> and should receive an empty string as value
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.