[ 
https://issues.apache.org/jira/browse/CLI-274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16046847#comment-16046847
 ] 

ASF GitHub Bot commented on CLI-274:
------------------------------------

Github user schaumb commented on a diff in the pull request:

    https://github.com/apache/commons-cli/pull/12#discussion_r121406356
  
    --- Diff: 
src/test/java/org/apache/commons/cli/PatternOptionBuilderTest.java ---
    @@ -159,13 +161,12 @@ public void testURLPattern() throws Exception
         @Test
         public void testExistingFilePattern() throws Exception
         {
    -        final Options options = PatternOptionBuilder.parsePattern("f<");
    +        final Options options = PatternOptionBuilder.parsePattern("f<g<");
             final CommandLineParser parser = new PosixParser();
    -        final CommandLine line = parser.parse(options, new String[] { 
"-f", "test.properties" });
    -
    -        assertEquals("f value", new File("test.properties"), 
line.getOptionObject("f"));
    -
    -        // todo test if an error is returned if the file doesn't exists 
(when it's implemented)
    +        final CommandLine line = parser.parse(options, new String[] { 
"-f", "test.properties", "-g", "/dev/null" });
    +        
    +        assertNotNull("option g not parsed, or not FileInputStream", 
(FileInputStream) line.getOptionObject("g"));
    +        assertNull("option f parsed", (FileInputStream) 
line.getOptionObject("f"));
    --- End diff --
    
    So basically `<` means this parameter is an existing file parameter.
    
    When I built the options manually, the type is what I need to set is 
`PatternOptionBuilder.EXISTING_FILE_VALUE`, which is `FileInputStream`.
    This is why think `line.getOptionObject("f")` need to return an object of 
type `FileInputStream`. 
    
    Yes, It is null because test.properties does not exist, or not readable. 
This can be made clearer somehow. 
    Another task is to find a cross-platform file which is exist (and not 
/dev/null).


> Option parser type EXISTING_FILE_VALUE not check file existing
> --------------------------------------------------------------
>
>                 Key: CLI-274
>                 URL: https://issues.apache.org/jira/browse/CLI-274
>             Project: Commons CLI
>          Issue Type: Bug
>          Components: Parser
>            Reporter: Béla Schaum
>            Priority: Minor
>
> When the user pass option type FileInputStream.class, I think the expected 
> behavior for the return value is the same type, which the user passed.
> Options options = new Options();
> options.addOption(Option.builder("f").hasArg().type(FileInputStream.class).build());
> CommandLine cline = new DefaultParser().parse(options, args);
> FileInputStream file = (FileInputStream) cline.getParsedOptionValue("f"); // 
> it returns "File" object, without check File exist.
> I attach a solution for it:
> https://github.com/schaumb/commons-cli/commit/abfcc8211f529ab75f3b3edd4a827e484109eb0b



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to