CommandSpec result = CommandSpec.wrapWithoutInspection(Assert.notNull(instance, "command"));
return result; result = CommandSpec.wrapWithoutInspection(element); result.withToString(commandClassName); commands.put(element, result);
@Test public void testAddMethodSubcommands() { CommandSpec spec = CommandSpec.wrapWithoutInspection(new StaticMethodCommand(1)); assertEquals(0, spec.subcommands().size()); spec.addMethodSubcommands(); assertEquals(4, spec.subcommands().size()); }
@Test public void testCommandSpecUsageMessageSetter() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); UsageMessageSpec old = spec.usageMessage(); assertSame(old, spec.usageMessage()); assertArrayEquals(new String[0], spec.usageMessage().description()); UsageMessageSpec update = new UsageMessageSpec().description("hi"); spec.usageMessage(update); assertSame(old, spec.usageMessage()); assertArrayEquals(new String[] {"hi"}, spec.usageMessage().description()); }
@Test public void testResemblesOption_WithOptionsDash() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); spec.addOption(OptionSpec.builder("-x").build()); spec.parser().unmatchedOptionsArePositionalParams(false); assertFalse(spec.resemblesOption("blah", null)); System.setProperty("picocli.trace", "DEBUG"); Tracer tracer = new Tracer(); System.clearProperty("picocli.trace"); assertFalse(spec.resemblesOption("blah", tracer)); assertTrue(spec.resemblesOption("-a", tracer)); assertFalse(spec.resemblesOption("/a", tracer)); Tracer tracer2 = new Tracer(); assertFalse(spec.resemblesOption("blah", tracer2)); assertTrue(spec.resemblesOption("-a", tracer)); assertFalse(spec.resemblesOption("/a", tracer)); }
@Test public void testDefaultValueProvider() { IDefaultValueProvider provider1 = new IDefaultValueProvider() { public String defaultValue(ArgSpec argSpec) { return null; } }; IDefaultValueProvider provider2 = new IDefaultValueProvider() { public String defaultValue(ArgSpec argSpec) { return null; } }; CommandSpec spec = CommandSpec.wrapWithoutInspection(null); spec.defaultValueProvider(provider1); CommandSpec mixin = CommandSpec.wrapWithoutInspection(null); mixin.defaultValueProvider(provider2); spec.addMixin("helper", mixin); assertSame(provider1, spec.defaultValueProvider()); }
@Test public void testInitVersionProvider() { IVersionProvider versionProvider1 = new IVersionProvider() { public String[] getVersion() { return new String[0]; } }; IVersionProvider versionProvider2 = new IVersionProvider() { public String[] getVersion() { return new String[0]; } }; CommandSpec spec = CommandSpec.wrapWithoutInspection(null); spec.versionProvider(versionProvider1); CommandSpec mixin = CommandSpec.wrapWithoutInspection(null); mixin.versionProvider(versionProvider2); spec.addMixin("helper", mixin); assertSame(versionProvider1, spec.versionProvider()); }
@Test public void testResemblesOption_WithOptionsNonDash() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); spec.addOption(OptionSpec.builder("/x").build()); spec.parser().unmatchedOptionsArePositionalParams(false); assertFalse(spec.resemblesOption("blah", null)); System.setProperty("picocli.trace", "DEBUG"); Tracer tracer = new Tracer(); System.clearProperty("picocli.trace"); assertFalse(spec.resemblesOption("blah", tracer)); assertFalse(spec.resemblesOption("-a", tracer)); assertTrue(spec.resemblesOption("/a", tracer)); Tracer tracer2 = new Tracer(); assertFalse(spec.resemblesOption("blah", tracer2)); assertFalse(spec.resemblesOption("-a", tracer)); assertTrue(spec.resemblesOption("/a", tracer)); }
/** Creates and returns a new {@code CommandSpec} without any associated user object. */ public static CommandSpec create() { return wrapWithoutInspection(null); }
@Test public void testResemblesOption_WithoutOptions() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); spec.parser().unmatchedOptionsArePositionalParams(false); assertFalse(spec.resemblesOption("blah", null)); System.setProperty("picocli.trace", "DEBUG"); Tracer tracer = new Tracer(); System.clearProperty("picocli.trace"); assertFalse(spec.resemblesOption("blah", tracer)); assertTrue(spec.resemblesOption("-a", tracer)); Tracer tracer2 = new Tracer(); assertFalse(spec.resemblesOption("blah", tracer2)); assertTrue(spec.resemblesOption("-a", tracer)); }
@Test public void testCommandSpecAddSubcommand_DisallowsDuplicateSubcommandAliases() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); CommandSpec sub = CommandSpec.wrapWithoutInspection(null); spec.addSubcommand("a", new CommandLine(sub)); CommandSpec sub2 = CommandSpec.wrapWithoutInspection(null); sub2.aliases("a"); try { spec.addSubcommand("x", new CommandLine(sub2)); } catch (InitializationException ex) { assertEquals("Alias 'a' for subcommand 'x' is already used by another subcommand of '<main class>'", ex.getMessage()); } }
@Test public void testResemblesOption_WhenUnmatchedArePositional() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); spec.parser().unmatchedOptionsArePositionalParams(true); assertFalse(spec.resemblesOption("blah", null)); System.setProperty("picocli.trace", "DEBUG"); Tracer tracer = new Tracer(); System.clearProperty("picocli.trace"); assertFalse(spec.resemblesOption("blah", tracer)); Tracer tracer2 = new Tracer(); assertFalse(spec.resemblesOption("blah", tracer2)); }
@Test public void testAliasesWithEmptyArray() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); assertArrayEquals(new String[0], spec.aliases()); spec.aliases((String[]) null); assertArrayEquals(new String[0], spec.aliases()); }
@Test public void testAddMethodSubcommands_DisallowedIfUserObjectIsMethod() throws Exception { Method m = MethodApp.class.getDeclaredMethod("run1", int.class); CommandSpec spec = CommandSpec.wrapWithoutInspection(m); try { spec.addMethodSubcommands(); } catch (InitializationException ex) { assertEquals("Cannot discover subcommand methods of this Command Method: int picocli.CommandLineCommandMethodTest$MethodApp.run1(int)", ex.getMessage()); } }
@Test public void testCommandSpecParserSetter() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); ParserSpec old = spec.parser(); assertSame(old, spec.parser()); assertFalse(spec.parser().collectErrors()); assertFalse(spec.parser().caseInsensitiveEnumValuesAllowed()); ParserSpec update = new ParserSpec().collectErrors(true).caseInsensitiveEnumValuesAllowed(true); spec.parser(update); assertSame(old, spec.parser()); assertTrue(spec.parser().collectErrors()); assertTrue(spec.parser().caseInsensitiveEnumValuesAllowed()); }
@Test public void testInitHelpCommand() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); assertFalse(spec.helpCommand()); CommandSpec mixin = CommandSpec.wrapWithoutInspection(null); mixin.helpCommand(true); spec.addMixin("helper", mixin); assertTrue(spec.helpCommand()); }
@Test public void testCommandSpecAddSubcommand_DisallowsDuplicateSubcommandNames() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); CommandSpec sub = CommandSpec.wrapWithoutInspection(null); spec.addSubcommand("a", new CommandLine(sub)); try { spec.addSubcommand("a", new CommandLine(sub)); } catch (InitializationException ex) { assertEquals("Another subcommand named 'a' already exists for command '<main class>'", ex.getMessage()); } }
@Test public void testCommandSpecUsageMessageSetter() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); UsageMessageSpec old = spec.usageMessage(); assertSame(old, spec.usageMessage()); assertArrayEquals(new String[0], spec.usageMessage().description()); UsageMessageSpec update = new UsageMessageSpec().description("hi"); spec.usageMessage(update); assertSame(old, spec.usageMessage()); assertArrayEquals(new String[] {"hi"}, spec.usageMessage().description()); }
@Test public void testNamesIncludesAliases() { CommandSpec spec = CommandSpec.wrapWithoutInspection(null); spec.aliases("a", "b", "d"); spec.name("c"); Set<String> all = spec.names(); assertArrayEquals(new String[] {"c", "a", "b", "d"}, all.toArray(new String[0])); }
@Test public void testCommandSpecAddSubcommand_SubcommandInheritsResourceBundle() { ResourceBundle rb = ResourceBundle.getBundle("picocli.SharedMessages"); CommandSpec spec = CommandSpec.wrapWithoutInspection(null); spec.resourceBundle(rb); assertSame(rb, spec.resourceBundle()); CommandSpec sub = CommandSpec.wrapWithoutInspection(null); spec.addSubcommand("a", new CommandLine(sub)); assertSame(rb, sub.resourceBundle()); }