aboutsummaryrefslogtreecommitdiff
path: root/absl/flags
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2022-02-22 13:16:07 -0800
committerCopybara-Service <copybara-worker@google.com>2022-02-22 13:16:37 -0800
commit7945da4917ff12828304acd562887f1abd545f3b (patch)
tree0acbbfa5b0ed9c6efacb90c312278156df97dc40 /absl/flags
parentcbd6e4477b792affe061fae02c262baeee3a7524 (diff)
downloadabsl-py-7945da4917ff12828304acd562887f1abd545f3b.tar.gz
Enumerate possible values in multi_enum flag help.
PiperOrigin-RevId: 430280700 Change-Id: I62ca45c7b794989f9e8ee66094fb73c5ac7a6840
Diffstat (limited to 'absl/flags')
-rw-r--r--absl/flags/_defines.py2
-rw-r--r--absl/flags/tests/flags_helpxml_test.py4
-rw-r--r--absl/flags/tests/flags_test.py29
3 files changed, 32 insertions, 3 deletions
diff --git a/absl/flags/_defines.py b/absl/flags/_defines.py
index f655714..4494c3b 100644
--- a/absl/flags/_defines.py
+++ b/absl/flags/_defines.py
@@ -798,7 +798,7 @@ def DEFINE_multi_enum( # pylint: disable=invalid-name,redefined-builtin
serializer,
name,
default,
- help,
+ '<%s>: %s' % ('|'.join(enum_values), help),
flag_values,
required=required,
**args)
diff --git a/absl/flags/tests/flags_helpxml_test.py b/absl/flags/tests/flags_helpxml_test.py
index 424c3dd..e2168ac 100644
--- a/absl/flags/tests/flags_helpxml_test.py
+++ b/absl/flags/tests/flags_helpxml_test.py
@@ -340,7 +340,7 @@ class FlagCreateXMLDOMElement(absltest.TestCase):
'<flag>\n'
' <file>tool</file>\n'
' <name>flavours</name>\n'
- ' <meaning>Compilation flavour.;\n'
+ ' <meaning>&lt;APPLE|BANANA|CHERRY&gt;: Compilation flavour.;\n'
' repeat this option to specify a list of values</meaning>\n'
' <default>[\'APPLE\', \'BANANA\']</default>\n'
' <current>[\'APPLE\', \'BANANA\']</current>\n'
@@ -474,7 +474,7 @@ EXPECTED_HELP_XML_FOR_FLAGS_FROM_MAIN_MODULE = """\
<key>yes</key>
<file>%(main_module_name)s</file>
<name>flavours</name>
- <meaning>Compilation flavour.;
+ <meaning>&lt;APPLE|BANANA|CHERRY&gt;: Compilation flavour.;
repeat this option to specify a list of values</meaning>
<default>['APPLE', 'BANANA']</default>
<current>['APPLE', 'BANANA']</current>
diff --git a/absl/flags/tests/flags_test.py b/absl/flags/tests/flags_test.py
index 75a61d5..8a42bc9 100644
--- a/absl/flags/tests/flags_test.py
+++ b/absl/flags/tests/flags_test.py
@@ -1511,6 +1511,20 @@ class MultiEnumFlagsTest(absltest.TestCase):
fv(argv)
self.assertListEqual(fv.get_flag_value('m_enum', None), ['WHOOSH', 'FOO'])
+ def test_help_text(self):
+ """Test multi_enum flag's help text."""
+ fv = flags.FlagValues()
+
+ flags.DEFINE_multi_enum(
+ 'm_enum',
+ None, ['FOO', 'BAR'],
+ 'Enum option that can occur multiple times',
+ flag_values=fv)
+ self.assertRegex(
+ fv['m_enum'].help,
+ r'<FOO\|BAR>: Enum option that can occur multiple times;\s+'
+ 'repeat this option to specify a list of values')
+
def test_single_value_default(self):
"""Test multi_enum flags with a single default value."""
fv = flags.FlagValues()
@@ -1590,6 +1604,21 @@ class MultiEnumClassFlagsTest(absltest.TestCase):
self.assertIsNone(fv.fruit)
+ def test_help_text(self):
+ fv = flags.FlagValues()
+ enum_defaults = None
+ flags.DEFINE_multi_enum_class(
+ 'fruit',
+ enum_defaults,
+ Fruit,
+ 'Enum option that can occur multiple times',
+ flag_values=fv)
+
+ self.assertRegex(
+ fv['fruit'].help,
+ r'<apple\|orange>: Enum option that can occur multiple times;\s+'
+ 'repeat this option to specify a list of values')
+
def test_define_results_in_registered_flag_with_string(self):
fv = flags.FlagValues()
enum_defaults = 'apple'