summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjeremysolarz <jeremy.solarz@gmail.com>2017-03-05 17:08:53 +0100
committerGitHub <noreply@github.com>2017-03-05 17:08:53 +0100
commitfab3cb966234895881a2134fdc4c394f0382d792 (patch)
tree52e0e5579d39b1ef5d6f2e78e75fc4719eb5ad6a
parent4b75f129a2247c8259d2129aa08d8a662af8ca9b (diff)
parent294e72533c7faaf3a71dc6ecf7633fe727097961 (diff)
downloadjcommander-fab3cb966234895881a2134fdc4c394f0382d792.tar.gz
Merge pull request #296 from slonopotamus/dash-dash-dash-dash-dash-dash
Fix '--' handling #296
-rw-r--r--CHANGELOG.md3
-rw-r--r--src/main/java/com/beust/jcommander/JCommander.java5
-rw-r--r--src/test/java/com/beust/jcommander/JCommanderTest.java39
3 files changed, 36 insertions, 11 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d90c905..3fcc135 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,9 @@
## Changelog
### Current
-2017-03-04
+2017-03-05
+* Fixed: '--' handling, #296
* Added: Add `getProgramName` to `JCommander`, #247
* Added: Documentation for `listConverter` and `splitter`, #253, (@jeremysolarz)
* Fixed: Return right parameter name in exception, #227, (@jeremysolarz)
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java
index 9656ab0..ac28cca 100644
--- a/src/main/java/com/beust/jcommander/JCommander.java
+++ b/src/main/java/com/beust/jcommander/JCommander.java
@@ -691,11 +691,10 @@ public class JCommander {
//
// Main parameter
//
- if ("--".equals(arg)) {
+ if ("--".equals(arg) && !isDashDash) {
isDashDash = true;
- a = trim(args[++i]);
}
- if (commands.isEmpty()) {
+ else if (commands.isEmpty()) {
//
// Regular (non-command) parsing
//
diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java
index 9cec462..4c3feab 100644
--- a/src/test/java/com/beust/jcommander/JCommanderTest.java
+++ b/src/test/java/com/beust/jcommander/JCommanderTest.java
@@ -1265,13 +1265,38 @@ public class JCommanderTest {
Assert.assertEquals(a.endpoint, Lists.newArrayList("dev"));
}
- public void dashDashParameter() {
- class Parameters {
- @Parameter(names = {"-name"})
- public String name;
- @Parameter
- public List<String> mainParameters;
- }
+ @Test
+ public void dashDashEmpty() {
+ class Parameters {
+ @Parameter
+ public List<String> mainParameters = new ArrayList<>();
+ }
+
+ Parameters a = new Parameters();
+ new JCommander(a, "--");
+ Assert.assertTrue(a.mainParameters.isEmpty());
+ }
+
+ @Test
+ public void dashDashDashDash() {
+ class Parameters {
+ @Parameter
+ public List<String> mainParameters = new ArrayList<>();
+ }
+
+ Parameters a = new Parameters();
+ new JCommander(a, "--", "--");
+ Assert.assertEquals(a.mainParameters.size(), 1);
+ Assert.assertEquals(a.mainParameters.get(0), "--");
+ }
+
+ public void dashDashParameter() {
+ class Parameters {
+ @Parameter(names = { "-name" })
+ public String name;
+ @Parameter
+ public List<String> mainParameters;
+ }
Parameters a = new Parameters();
new JCommander(a, "-name", "theName", "--", "param1", "param2");