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 == ''
+    }
 }