Case insensitive option with separator does not work

20 views
Skip to first unread message

mvanle

unread,
Jun 29, 2019, 10:13:54 AM6/29/19
to jcommander
I am using "jcommander-1.72.jar". 

JCommander does not find the parameter name when parameters are set to case-insensitive and a separator is being used:

package test;

import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.Parameters;
import com.beust.jcommander.ParameterException;

@Parameters(separators = "=")
public class Main
{
   
@Parameter(names={"--argval"})
   
String argval;

   
public static void main(String[] args)
   
{
       
JCommander jct;
           
       
Main main = new Main();
       
       
/* Case sensitive with separator is OK */
        args
= new String[] {"--argval=abc"};
        jct
= JCommander.newBuilder().addObject(main).build();
        jct
.setCaseSensitiveOptions(true);
        jct
.parse(args);
       
System.out.println("OK: " + main.argval);
       

       
/* Case in-sensitive with separator FAILS */
       
try
       
{
            args
= new String[] {"--ARGVAL=def"};
            jct
= JCommander.newBuilder().addObject(main).build();
            jct
.setCaseSensitiveOptions(false);
            jct
.parse(args);
            System.out.println("OK: " + main.argval);
       
}
       
catch (ParameterException e)
       
{
           
System.err.println("FAIL: " + e);
       
}

       
/* Case in-sensitive with no separator is OK */
        args
= new String[] {"--ARGVAL", "ghi"};
        jct
= JCommander.newBuilder().addObject(main).build();
        jct
.setCaseSensitiveOptions(false);
        jct
.parse(args);        
       
System.out.println("OK: " + main.argval);
   
}
}


Expected output:

OK: abc
OK
: def
OK
: ghi


Actual output:

OK: abc
FAIL
: com.beust.jcommander.ParameterException: Unknown option: --ARGVAL=def
OK
: ghi


Reply all
Reply to author
Forward
0 new messages