Wrong arity for default boolean type

- Set boolean type arity zero or more as default.
- Backport #675
- Fixes #677
This commit is contained in:
Janne Valkealahti
2023-02-27 15:44:35 +00:00
parent 339b43b5e3
commit d9641f6d1c
2 changed files with 21 additions and 4 deletions

View File

@@ -152,10 +152,10 @@ public class StandardMethodTargetRegistrar implements MethodTargetRegistrar, App
}
else {
if (ClassUtils.isAssignable(boolean.class, parameterType)) {
optionSpec.arity(OptionArity.ZERO);
optionSpec.arity(OptionArity.ZERO_OR_ONE);
}
else if (ClassUtils.isAssignable(Boolean.class, parameterType)) {
optionSpec.arity(OptionArity.ZERO);
optionSpec.arity(OptionArity.ZERO_OR_ONE);
}
else {
optionSpec.arity(OptionArity.EXACTLY_ONE);
@@ -196,10 +196,10 @@ public class StandardMethodTargetRegistrar implements MethodTargetRegistrar, App
.required()
.position(mp.getParameterIndex());
if (ClassUtils.isAssignable(boolean.class, parameterType)) {
optionSpec.arity(OptionArity.ZERO);
optionSpec.arity(OptionArity.ZERO_OR_ONE);
}
else if (ClassUtils.isAssignable(Boolean.class, parameterType)) {
optionSpec.arity(OptionArity.ZERO);
optionSpec.arity(OptionArity.ZERO_OR_ONE);
}
else {
optionSpec.arity(OptionArity.EXACTLY_ONE);

View File

@@ -416,16 +416,29 @@ public class StandardMethodTargetRegistrarTests {
assertThat(catalog.getRegistrations().get("foo1").getOptions()).hasSize(1);
assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getDefaultValue()).isEqualTo("false");
assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).isRequired()).isFalse();
assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getArityMin()).isEqualTo(0);
assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getArityMax()).isEqualTo(1);
assertThat(catalog.getRegistrations().get("foo2")).isNotNull();
assertThat(catalog.getRegistrations().get("foo2").getOptions()).hasSize(1);
assertThat(catalog.getRegistrations().get("foo2").getOptions().get(0).getDefaultValue()).isEqualTo("true");
assertThat(catalog.getRegistrations().get("foo2").getOptions().get(0).isRequired()).isFalse();
assertThat(catalog.getRegistrations().get("foo2").getOptions().get(0).getArityMin()).isEqualTo(0);
assertThat(catalog.getRegistrations().get("foo2").getOptions().get(0).getArityMax()).isEqualTo(1);
assertThat(catalog.getRegistrations().get("foo3")).isNotNull();
assertThat(catalog.getRegistrations().get("foo3").getOptions()).hasSize(1);
assertThat(catalog.getRegistrations().get("foo3").getOptions().get(0).isRequired()).isFalse();
assertThat(catalog.getRegistrations().get("foo3").getOptions().get(0).getDefaultValue()).isEqualTo("false");
assertThat(catalog.getRegistrations().get("foo3").getOptions().get(0).getArityMin()).isEqualTo(0);
assertThat(catalog.getRegistrations().get("foo3").getOptions().get(0).getArityMax()).isEqualTo(1);
assertThat(catalog.getRegistrations().get("foo4")).isNotNull();
assertThat(catalog.getRegistrations().get("foo4").getOptions()).hasSize(1);
assertThat(catalog.getRegistrations().get("foo4").getOptions().get(0).isRequired()).isTrue();
assertThat(catalog.getRegistrations().get("foo4").getOptions().get(0).getDefaultValue()).isNull();
assertThat(catalog.getRegistrations().get("foo4").getOptions().get(0).getArityMin()).isEqualTo(0);
assertThat(catalog.getRegistrations().get("foo4").getOptions().get(0).getArityMax()).isEqualTo(1);
}
@ShellComponent
@@ -442,6 +455,10 @@ public class StandardMethodTargetRegistrarTests {
@ShellMethod(value = "foo3")
public void foo3(@ShellOption boolean arg1) {
}
@ShellMethod(value = "foo4")
public void foo4(boolean arg1) {
}
}
@Test