You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by bu...@apache.org on 2001/08/24 12:23:50 UTC
[Bug 3255] New: - CLArgsParser loops infinitely on OPTIONAL options
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3255
Summary: CLArgsParser loops infinitely on OPTIONAL options
Product: Avalon
Version: 4.0b3
Platform: All
URL:
OS/Version: All
Status: NEW
Status Whiteboard:
Keywords:
Resolution:
Severity: Normal
Priority: Other
Component: Excalibur
AssignedTo: avalon-dev@jakarta.apache.org
ReportedBy: frankm@bayarea.net
To reproduce, add the following to
org.apache.avalon.excalibur.cli.test.ClutilTestCase:
private static final int TAINT_OPT = 'T';
protected final static CLOptionDescriptor TAINT =
new CLOptionDescriptor( "taint",
CLOptionDescriptor.ARGUMENT_OPTIONAL,
TAINT_OPT,
"turn on tainting checks (optional level)." );
public void testOptionalArgsWithArgShortBeforeOtherOpt()
{
//"-T3","-a"
final CLOptionDescriptor[] options = new CLOptionDescriptor[]
{
ALL, TAINT
};
final String[] args = new String[] { "-T3", "-a" };
System.out.println("[before parsing]");
final CLArgsParser parser = new CLArgsParser( args, options );
System.out.println("[after parsing]");
assertNull( parser.getErrorString() );
final List clOptions = parser.getArguments();
final int size = clOptions.size();
assertEquals( size, 2 );
final CLOption option0 = (CLOption)clOptions.get( 0 );
assertEquals( option0.getId(), TAINT_OPT );
assertEquals( option0.getArgument( 0 ), "3" );
final CLOption option1 = (CLOption)clOptions.get( 1 );
assertEquals( option1.getId(), ALL_OPT );
assertEquals( option1.getArgument( 0 ), "" );
}
public void testOptionalArgsNoArgShortBeforeOtherOpt()
{
//"-T","-a"
final CLOptionDescriptor[] options = new CLOptionDescriptor[]
{
ALL, TAINT
};
final String[] args = new String[] { "-T", "-a" };
System.out.println("[before parsing]");
final CLArgsParser parser = new CLArgsParser( args, options );
System.out.println("[after parsing]");
assertNull( parser.getErrorString() );
final List clOptions = parser.getArguments();
final int size = clOptions.size();
assertEquals( size, 2 );
final CLOption option0 = (CLOption)clOptions.get( 0 );
assertEquals( option0.getId(), TAINT_OPT );
assertEquals( option0.getArgument( 0 ), "" );
final CLOption option1 = (CLOption)clOptions.get( 1 );
assertEquals( option1.getId(), ALL_OPT );
assertEquals( option1.getArgument( 0 ), "" );
}
Both tests will hang after printing "[before parsing]". Note that, if the
arguments were reversed ("-a" "-T"), the test would complete.
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org