diff options
-rw-r--r-- | CHANGES.rst | 2 | ||||
-rw-r--r-- | src/click/core.py | 3 | ||||
-rw-r--r-- | tests/test_options.py | 10 |
3 files changed, 14 insertions, 1 deletions
diff --git a/CHANGES.rst b/CHANGES.rst index 4a75360..8f978ff 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -8,6 +8,8 @@ Unreleased - ``is_bool_flag`` is not set to ``True`` if ``is_flag`` is ``False``. :issue:`1925` - Bash version detection is locale independent. :issue:`1940` +- Empty ``default`` value is not shown for ``multiple=True``. + :issue:`1969` Version 8.0.1 diff --git a/src/click/core.py b/src/click/core.py index 6252f6d..ea5215f 100644 --- a/src/click/core.py +++ b/src/click/core.py @@ -2748,7 +2748,8 @@ class Option(Parameter): else: default_string = str(default_value) - extra.append(_("default: {default}").format(default=default_string)) + if default_string: + extra.append(_("default: {default}").format(default=default_string)) if isinstance(self.type, types._NumberRangeBase): range_str = self.type._describe_range() diff --git a/tests/test_options.py b/tests/test_options.py index bddd194..53179e8 100644 --- a/tests/test_options.py +++ b/tests/test_options.py @@ -728,6 +728,16 @@ def test_do_not_show_no_default(runner): assert "[default: None]" not in message +def test_do_not_show_default_empty_multiple(): + """When show_default is True and multiple=True is set, it should not + print empty default value in --help output. + """ + opt = click.Option(["-a"], multiple=True, help="values", show_default=True) + ctx = click.Context(click.Command("cli")) + message = opt.get_help_record(ctx)[1] + assert message == "values" + + @pytest.mark.parametrize( ("args", "expect"), [ |