From 25fbea80c0d4e8b84143b19fb729c1b8c27989a5 Mon Sep 17 00:00:00 2001 From: Mike Drob Date: Fri, 7 Jun 2013 02:00:32 -0400 Subject: added test for quotes --- .../java/com/mdrob/jcommander/QuotedMainTest.java | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/test/java/com/mdrob/jcommander/QuotedMainTest.java diff --git a/src/test/java/com/mdrob/jcommander/QuotedMainTest.java b/src/test/java/com/mdrob/jcommander/QuotedMainTest.java new file mode 100644 index 0000000..fcd2e2e --- /dev/null +++ b/src/test/java/com/mdrob/jcommander/QuotedMainTest.java @@ -0,0 +1,30 @@ +package com.mdrob.jcommander; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.beust.jcommander.JCommander; +import com.beust.jcommander.Parameter; + + +public class QuotedMainTest { + public static class Options { + @Parameter + List args = new ArrayList(); + + @Parameter(names={"-f", "--foo"}) + String other; + } + + @Test + public void testMain() { + String quoted = "\"quoted\""; + Options options = new Options(); + new JCommander(options).parse(quoted); + Assert.assertEquals(options.args, Collections.singletonList(quoted)); + } +} -- cgit v1.2.3 From fa793cd8418739fba071ab481b322bdcad18389f Mon Sep 17 00:00:00 2001 From: Mike Drob Date: Fri, 7 Jun 2013 02:33:58 -0400 Subject: test to reproduce bug with quoted main parameters --- pom.xml | 2 +- .../java/com/mdrob/jcommander/QuotedMainTest.java | 26 ++++++++++------------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index d17bda8..ece970e 100644 --- a/pom.xml +++ b/pom.xml @@ -131,7 +131,7 @@ maven-surefire-plugin 2.10 - true + false diff --git a/src/test/java/com/mdrob/jcommander/QuotedMainTest.java b/src/test/java/com/mdrob/jcommander/QuotedMainTest.java index fcd2e2e..9b0cbb3 100644 --- a/src/test/java/com/mdrob/jcommander/QuotedMainTest.java +++ b/src/test/java/com/mdrob/jcommander/QuotedMainTest.java @@ -1,7 +1,6 @@ package com.mdrob.jcommander; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.testng.Assert; @@ -10,21 +9,20 @@ import org.testng.annotations.Test; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; - public class QuotedMainTest { - public static class Options { - @Parameter - List args = new ArrayList(); - - @Parameter(names={"-f", "--foo"}) - String other; - } + @Parameter + List args = new ArrayList(); + String quoted = "\" \""; + @Test - public void testMain() { - String quoted = "\"quoted\""; - Options options = new Options(); - new JCommander(options).parse(quoted); - Assert.assertEquals(options.args, Collections.singletonList(quoted)); + public void testMain() { + JCommander jc = new JCommander(this); + jc.parse(quoted); + Assert.assertEquals(args.size(), 1); + } + + public static void main(String[] args) { + new QuotedMainTest().testMain(); } } -- cgit v1.2.3 From b2435441a8c891f9577fdab4421a580f5f807758 Mon Sep 17 00:00:00 2001 From: Mike Drob Date: Fri, 7 Jun 2013 03:04:36 -0400 Subject: bugfix to address quoted main params --- pom.xml | 2 +- src/main/java/com/beust/jcommander/JCommander.java | 3 ++- .../java/com/mdrob/jcommander/QuotedMainTest.java | 28 --------------------- src/test/java/test/QuotedMainTest.java | 29 ++++++++++++++++++++++ 4 files changed, 32 insertions(+), 30 deletions(-) delete mode 100644 src/test/java/com/mdrob/jcommander/QuotedMainTest.java create mode 100644 src/test/java/test/QuotedMainTest.java diff --git a/pom.xml b/pom.xml index ece970e..d17bda8 100644 --- a/pom.xml +++ b/pom.xml @@ -131,7 +131,7 @@ maven-surefire-plugin 2.10 - false + true diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java index 1bc0084..b78d890 100644 --- a/src/main/java/com/beust/jcommander/JCommander.java +++ b/src/main/java/com/beust/jcommander/JCommander.java @@ -680,6 +680,7 @@ public class JCommander { while (i < args.length && ! commandParsed) { String arg = args[i]; String a = trim(arg); + args[i] = a; p("Parsing arg: " + a); JCommander jc = findCommandByAlias(arg); @@ -748,7 +749,7 @@ public class JCommander { // Regular (non-command) parsing // List mp = getMainParameter(arg); - String value = arg; + String value = a; // If there's a non-quoted version, prefer that one Object convertedValue = value; if (m_mainParameter.getGenericType() instanceof ParameterizedType) { diff --git a/src/test/java/com/mdrob/jcommander/QuotedMainTest.java b/src/test/java/com/mdrob/jcommander/QuotedMainTest.java deleted file mode 100644 index 9b0cbb3..0000000 --- a/src/test/java/com/mdrob/jcommander/QuotedMainTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.mdrob.jcommander; - -import java.util.ArrayList; -import java.util.List; - -import org.testng.Assert; -import org.testng.annotations.Test; - -import com.beust.jcommander.JCommander; -import com.beust.jcommander.Parameter; - -public class QuotedMainTest { - @Parameter - List args = new ArrayList(); - - String quoted = "\" \""; - - @Test - public void testMain() { - JCommander jc = new JCommander(this); - jc.parse(quoted); - Assert.assertEquals(args.size(), 1); - } - - public static void main(String[] args) { - new QuotedMainTest().testMain(); - } -} diff --git a/src/test/java/test/QuotedMainTest.java b/src/test/java/test/QuotedMainTest.java new file mode 100644 index 0000000..abb97c0 --- /dev/null +++ b/src/test/java/test/QuotedMainTest.java @@ -0,0 +1,29 @@ +package test; + +import java.util.ArrayList; +import java.util.List; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import com.beust.jcommander.JCommander; +import com.beust.jcommander.Parameter; + +public class QuotedMainTest { + @Parameter + List args = new ArrayList(); + + String quoted = "\" \""; + + @Test + public void testMain() { + JCommander jc = new JCommander(this); + jc.parse(quoted); + Assert.assertEquals(args.size(), 1); + Assert.assertEquals(args.get(0), " "); + } + + public static void main(String[] args) { + new QuotedMainTest().testMain(); + } +} -- cgit v1.2.3