diff options
Diffstat (limited to 'src/test/java/com/beust/jcommander/command/CommandTest.java')
-rw-r--r-- | src/test/java/com/beust/jcommander/command/CommandTest.java | 57 |
1 files changed, 51 insertions, 6 deletions
diff --git a/src/test/java/com/beust/jcommander/command/CommandTest.java b/src/test/java/com/beust/jcommander/command/CommandTest.java index cf921bd..5cb7c34 100644 --- a/src/test/java/com/beust/jcommander/command/CommandTest.java +++ b/src/test/java/com/beust/jcommander/command/CommandTest.java @@ -18,12 +18,13 @@ package com.beust.jcommander.command; +import com.beust.jcommander.ArgsValidate2; import com.beust.jcommander.JCommander; import com.beust.jcommander.ParameterException; - import org.testng.Assert; import org.testng.annotations.Test; +import java.io.File; import java.util.Arrays; public class CommandTest { @@ -75,11 +76,6 @@ public class CommandTest { jc.addCommand("commit", commit); jc.parse("-v", "commit", "--amend", "--author=cbeust", "A.java", "B.java"); -// jc.setProgramName("TestCommander"); -// jc.usage(); -// jc.usage("add"); -// jc.usage("commit"); - Assert.assertTrue(cm.verbose); Assert.assertEquals(jc.getParsedCommand(), "commit"); Assert.assertTrue(commit.amend); @@ -109,6 +105,55 @@ public class CommandTest { Assert.assertFalse(out.toString().contains("hidden Hidden command to add file contents to the index")); } + @Test + public void noParametersAnnotationOnCommandTest() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandNoParametersAnnotation noParametersAnnotation = new CommandNoParametersAnnotation(); + jc.addCommand("no-annotation", noParametersAnnotation); + + jc.setProgramName("TestCommander"); + StringBuilder out = new StringBuilder(); + jc.usage(out); + + Assert.assertTrue(out.toString().contains("no-annotation")); + } + + @Test + public void noTrailingSpaceInUsageTest() { + CommandMain cm = new CommandMain(); + JCommander jc = new JCommander(cm); + CommandAdd add = new CommandAdd(); + jc.addCommand("add", add); + CommandCommit commit = new CommandCommit(); + jc.addCommand("commit", commit); + jc.parse("-v", "commit", "--amend", "--author=cbeust", "A.java", "B.java"); + StringBuilder out = new StringBuilder(); + jc.usage(out); + String firstLine = out.toString().split("\n")[0]; + Assert.assertFalse(firstLine.endsWith(" "), "Usage should not have trailing spaces"); + } + + @Test(expectedExceptions = ParameterException.class) + public void validateSubCommand() throws Exception { + JCommander jc = new JCommander(new CommandMain()); + final ArgsValidate2 sub = new ArgsValidate2(); + sub.template = null; + jc.addCommand("sub", sub); + jc.parse("sub", "-template", "foo"); + } + + @Test + public void doNotValidateSubCommand() throws Exception { + JCommander jc = new JCommander(new CommandMain()); + final ArgsValidate2 sub = new ArgsValidate2(); + sub.template = null; + jc.addCommand("sub", sub); + jc.parseWithoutValidation("sub", "-template", "foo"); + Assert.assertEquals(sub.template, new File("foo")); + + } + public static void main(String[] args) { new CommandTest().shouldComplainIfNoAnnotations(); } |