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:26:32 UTC

[groovy] branch GROOVY_2_5_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_2_5_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_2_5_X by this push:
     new ede7ffc  GROOVY-9599: respect empty String as default value in CliBuilder
ede7ffc is described below

commit ede7ffca2bf151471cfc888ee41d4c4f68d3d906
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 d6d66b5..8180e19 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
@@ -1101,4 +1101,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 == ''
+    }
 }