summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.rst2
-rw-r--r--src/click/core.py3
-rw-r--r--tests/test_options.py10
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"),
[