You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2015/07/21 16:46:00 UTC

svn commit: r1692135 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src: main/java/org/apache/uima/ducc/cli/CliBase.java main/java/org/apache/uima/ducc/cli/CommandLine.java test/java/org/apache/uima/ducc/cli/test/TestCommandLine.java

Author: burn
Date: Tue Jul 21 14:46:00 2015
New Revision: 1692135

URL: http://svn.apache.org/r1692135
Log:
UIMA-4521 Don't reject option values that match option names.  Include test code

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/test/java/org/apache/uima/ducc/cli/test/TestCommandLine.java

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java?rev=1692135&r1=1692134&r2=1692135&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java Tue Jul 21 14:46:00 2015
@@ -553,10 +553,7 @@ public abstract class CliBase
     public boolean setProperty(String key, String value)
     {
 
-        if ( key.startsWith("--") ) {
-            key = key.substring(2);
-        }
-        if ( ! commandLine.isOption(key)) {       
+        if ( ! commandLine.isOptionName(key)) {       
             return false;
         }
         cli_props.setProperty(key, value);

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java?rev=1692135&r1=1692134&r2=1692135&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CommandLine.java Tue Jul 21 14:46:00 2015
@@ -105,16 +105,33 @@ public class CommandLine
         return contains(o);                         // does it have a value?
     }
 
+    /**
+     * Checks if this is a command-line option, i.e. with -- or - prefix
+     * 
+     * @param s This is the command-line token to test
+     * @return <b>true</b> if it is a valid option, <b>false</b> otherwise
+     */
     public boolean isOption(String s)
     {
-        // is this string a legal option?
-        // for use in parsing values that start with - or --
+        // Command-line options must have a -- or - prefix 
         if      ( s.startsWith("--") ) s = s.substring(2);
         else if ( s.startsWith("-") )  s = s.substring(1);
+        else return false;
 
         return name_to_option.containsKey(s);
     }
 
+    /**
+     * Checks if this is a valid option
+     * 
+     * @param s This is the option to test
+     * @return <b>true</b> if it is a valid option, <b>false</b> otherwise
+     */
+    public boolean isOptionName(String s)
+    {
+        return name_to_option.containsKey(s);
+    }
+    
     public boolean isOption(IUiOption k)
     {
         // is this a legal option?

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/test/java/org/apache/uima/ducc/cli/test/TestCommandLine.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/test/java/org/apache/uima/ducc/cli/test/TestCommandLine.java?rev=1692135&r1=1692134&r2=1692135&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/test/java/org/apache/uima/ducc/cli/test/TestCommandLine.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-cli/src/test/java/org/apache/uima/ducc/cli/test/TestCommandLine.java Tue Jul 21 14:46:00 2015
@@ -350,6 +350,7 @@ public class TestCommandLine
             "MultipleOptionSets",
             "HelpGeneration",
             "MultiTokenValue",
+            "OptionAsArg",
         };
     }
 
@@ -824,6 +825,36 @@ public class TestCommandLine
         
     }
 
+    public void testOptionAsArg(String testid)
+    {
+        // 
+        // Specify an option value that also matches another option
+        // See Jira 4521
+        //
+        String[] args = {
+            "--scheduling_class" , "help",
+            "--help",
+        };
+        IUiOption[] opts = {
+            OptionSet1.Help,
+            OptionSet1.Debug,
+            OptionSet1.Autostart,
+            OptionSet1.SchedulingClass,
+            OptionSet1.WorkingDirectory,
+        };
+
+        CommandLine cl = new CommandLine(args, opts);
+
+        try {            
+            cl.parse();
+            success(testid, "Command line:", cl.toString());
+        } catch (Exception e) {
+            fail(testid, "Parse with an arg matching an option failed.", e.getMessage());
+        }
+        
+    }
+
+
     public static void main(String[] args)
     {
         try {