commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bay...@apache.org
Subject svn commit: r664644 - in /commons/proper/cli/trunk/src: java/org/apache/commons/cli2/ java/org/apache/commons/cli2/option/ test/org/apache/commons/cli2/bug/
Date Mon, 09 Jun 2008 07:27:02 GMT
Author: bayard
Date: Mon Jun  9 00:27:02 2008
New Revision: 664644

URL: http://svn.apache.org/viewvc?rev=664644&view=rev
Log:
Applying Brian Egge's patch to CLI-145, fixing things so the withMinimum/withMaximum works
correctly

Added:
    commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI145Test.java   (with
props)
Modified:
    commons/proper/cli/trunk/src/java/org/apache/commons/cli2/OptionException.java
    commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java
    commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugLoopingOptionLookAlikeTest.java

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/OptionException.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/OptionException.java?rev=664644&r1=664643&r2=664644&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/OptionException.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/OptionException.java Mon Jun
 9 00:27:02 2008
@@ -43,6 +43,9 @@
     /** The message explaining the Exception */
     private final String message;
 
+    /** The id of the message */
+    private final String messageKey;
+
     /**
      * Creates a new OptionException.
      *
@@ -73,6 +76,7 @@
                            final String messageKey,
                            final String value) {
         this.option = option;
+        this.messageKey = messageKey;
 
         if (messageKey != null) {
             final StringBuffer buffer = new StringBuffer();
@@ -104,4 +108,8 @@
     public String getMessage() {
         return message;
     }
+
+    public String getMessageKey() {
+        return messageKey;
+    }
 }

Modified: commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java?rev=664644&r1=664643&r2=664644&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java (original)
+++ commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java Mon
Jun  9 00:27:02 2008
@@ -140,7 +140,8 @@
                               final ListIterator arguments,
                               final Option option)
         throws OptionException {
-        int argumentCount = commandLine.getValues(option, Collections.EMPTY_LIST).size();
+        // count of arguments processed for this option.
+        int argumentCount = 0;
 
         while (arguments.hasNext() && (argumentCount < maximum)) {
             final String allValuesQuoted = (String) arguments.next();

Added: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI145Test.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI145Test.java?rev=664644&view=auto
==============================================================================
--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI145Test.java (added)
+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI145Test.java Mon Jun
 9 00:27:02 2008
@@ -0,0 +1,118 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.cli2.bug;
+
+import junit.framework.TestCase;
+import org.apache.commons.cli2.CommandLine;
+import org.apache.commons.cli2.Group;
+import org.apache.commons.cli2.builder.ArgumentBuilder;
+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
+import org.apache.commons.cli2.builder.GroupBuilder;
+import org.apache.commons.cli2.commandline.Parser;
+import org.apache.commons.cli2.option.DefaultOption;
+
+import java.util.List;
+
+/**
+ * ArgumentBuilder.withMaximum causes parse errors: Unexpeced <value> while processing
options
+ *
+ * @author David Biesack
+ * @author brianegge
+ */
+public class BugCLI145Test extends TestCase {
+    public void testWithMaximum() {
+        final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
+        final ArgumentBuilder abuilder = new ArgumentBuilder();
+        final GroupBuilder gbuilder = new GroupBuilder();
+        DefaultOption aOption = obuilder//
+                .withShortName("a")
+                .withLongName("a")
+                .withArgument(abuilder
+                        .withName("a")
+                        .withDefault("10")
+                        .create())
+                .create();
+        DefaultOption bOption = obuilder
+                .withShortName("b")
+                .withLongName("b")
+                .withArgument(abuilder
+                        .withName("b")
+                        .withMinimum(2)
+                        .withMaximum(4)
+                        .withDefault("100")
+                        .withDefault("1000")
+                        .withDefault("10000")
+                        .withDefault("1000000")
+                        .create())
+                .create();
+        Group options = gbuilder
+                .withName("options")
+                .withOption(aOption)
+                .withOption(bOption)
+                .create();
+        Parser parser = new Parser();
+        parser.setHelpTrigger("--help");
+        parser.setGroup(options);
+        CommandLine cl = parser.parseAndHelp("-a 0 -b 1 2 3 4".split(" "));
+        assertNotNull(cl);
+        int a = Integer.parseInt(cl.getValue(aOption).toString());
+        List b = cl.getValues(bOption);
+        assertEquals(0, a);
+        assertEquals(4, b.size());
+    }
+
+    public void testWithMaximumUsingDefaultValues() {
+        final DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
+        final ArgumentBuilder abuilder = new ArgumentBuilder();
+        final GroupBuilder gbuilder = new GroupBuilder();
+        DefaultOption aOption = obuilder//
+                .withShortName("a")
+                .withLongName("a")
+                .withArgument(abuilder
+                        .withName("a")
+                        .withDefault("10")
+                        .create())
+                .create();
+        DefaultOption bOption = obuilder
+                .withShortName("b")
+                .withLongName("b")
+                .withArgument(abuilder
+                        .withName("b")
+                        .withMinimum(2)
+                        .withMaximum(4)
+                        .withDefault("100")
+                        .withDefault("1000")
+                        .withDefault("10000")
+                        .create())
+                .create();
+        Group options = gbuilder
+                .withName("options")
+                .withOption(aOption)
+                .withOption(bOption)
+                .create();
+        Parser parser = new Parser();
+        parser.setHelpTrigger("--help");
+        parser.setGroup(options);
+        CommandLine cl = parser.parseAndHelp("-a -b".split(" "));
+        assertNotNull(cl);
+        int a = Integer.parseInt(cl.getValue(aOption).toString());
+        List b = cl.getValues(bOption);
+        assertEquals(10, a);
+        assertEquals(3, b.size());
+        assertEquals("10000", b.get(2));
+    }
+}

Propchange: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugCLI145Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugLoopingOptionLookAlikeTest.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugLoopingOptionLookAlikeTest.java?rev=664644&r1=664643&r2=664644&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugLoopingOptionLookAlikeTest.java
(original)
+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/bug/BugLoopingOptionLookAlikeTest.java
Mon Jun  9 00:27:02 2008
@@ -23,6 +23,7 @@
 import org.apache.commons.cli2.Argument;
 import org.apache.commons.cli2.Group;
 import org.apache.commons.cli2.OptionException;
+import org.apache.commons.cli2.resource.ResourceConstants;
 import org.apache.commons.cli2.builder.ArgumentBuilder;
 import org.apache.commons.cli2.builder.DefaultOptionBuilder;
 import org.apache.commons.cli2.builder.GroupBuilder;
@@ -31,7 +32,7 @@
 
 /**
  * The first is a loop in Parser.parse() if I set a non-declared option. This 
- * code goes into a loop in Parser.java method parse this “while” loop runs 
+ * code goes into a loop in Parser.java method parse this 'while' loop runs 
  * endless
  * 
  * @author Steve Alberty
@@ -73,7 +74,7 @@
             parser.parse(new String[] { "testfile.txt", "testfile.txt", "testfile.txt", "testfile.txt"
});
             fail("OptionException");
         } catch (OptionException e) {
-            assertEquals("Unexpected testfile.txt while processing ", e.getMessage());
+            assertEquals(ResourceConstants.ARGUMENT_UNEXPECTED_VALUE, e.getMessageKey());
         }
     }    
 }



Mime
View raw message