You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by rp...@apache.org on 2020/06/22 00:21:42 UTC
[groovy] branch GROOVY_3_0_X updated: GROOVY-9599: respect empty
String as default value in CliBuilder
This is an automated email from the ASF dual-hosted git repository.
rpopma pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
new 829b19c GROOVY-9599: respect empty String as default value in CliBuilder
829b19c is described below
commit 829b19c7bcc91b3aa80f16379f980dc5dcdf9c64
Author: Remko Popma <re...@yahoo.com>
AuthorDate: Mon Jun 22 09:19:03 2020 +0900
GROOVY-9599: respect empty String as default value in CliBuilder
(cherry picked from commit 16a5c42e53c440d3675d7b7cb91113a584663b86)
---
.../src/main/groovy/groovy/cli/picocli/CliBuilder.groovy | 2 +-
.../src/test/groovy/groovy/cli/picocli/CliBuilderTest.groovy | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy b/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy
index 914360a..e9248c5 100644
--- a/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy
+++ b/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy
@@ -940,7 +940,7 @@ class CliBuilder {
m.remove('args')
m.remove('optionalArg')
}
- if (!m.defaultValue) {
+ if (!m.containsKey('defaultValue')) { // GROOVY-9599
m.remove('defaultValue') // don't default the picocli model to empty string
}
def result = m.collectMany { k, v ->
diff --git a/subprojects/groovy-cli-picocli/src/test/groovy/groovy/cli/picocli/CliBuilderTest.groovy b/subprojects/groovy-cli-picocli/src/test/groovy/groovy/cli/picocli/CliBuilderTest.groovy
index 55e851a..267bad9 100644
--- a/subprojects/groovy-cli-picocli/src/test/groovy/groovy/cli/picocli/CliBuilderTest.groovy
+++ b/subprojects/groovy-cli-picocli/src/test/groovy/groovy/cli/picocli/CliBuilderTest.groovy
@@ -1102,4 +1102,16 @@ Usage: groovy [-hiV] [-cp] [-pa] [-pr] [--configscript=PARAM]
assert Integer == opts.i.getClass()
assert opts.i == 0
}
+
+ // GROOVY-9599
+ void testStringOptionWithDefaultEmptyStringShouldNotConvertToFalseOrNullObject() {
+ def cli = new CliBuilder()
+ cli.s(type: String, longOpt: 'strTest', required: false, args: 1, defaultValue: '', 'Testing string with default empty string')
+
+ def opts = cli.parse([]) // no args, so defaults are applied
+ assert opts
+
+ assert String == opts.s.getClass()
+ assert opts.s == ''
+ }
}