diff options
author | Abseil Team <absl-team@google.com> | 2022-02-22 13:16:07 -0800 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2022-02-22 13:16:37 -0800 |
commit | 7945da4917ff12828304acd562887f1abd545f3b (patch) | |
tree | 0acbbfa5b0ed9c6efacb90c312278156df97dc40 /absl/flags | |
parent | cbd6e4477b792affe061fae02c262baeee3a7524 (diff) | |
download | absl-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.py | 2 | ||||
-rw-r--r-- | absl/flags/tests/flags_helpxml_test.py | 4 | ||||
-rw-r--r-- | absl/flags/tests/flags_test.py | 29 |
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><APPLE|BANANA|CHERRY>: 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><APPLE|BANANA|CHERRY>: 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' |