summaryrefslogtreecommitdiff
path: root/Lib/test/test_argparse.py
diff options
context:
space:
mode:
authorFlavian Hautbois <flavianh@sicara.com>2019-08-25 21:06:45 +0200
committerBerker Peksag <berker.peksag@gmail.com>2019-08-25 22:06:45 +0300
commitda27d9b9dc44913ffee8f28d9638985eaaa03755 (patch)
tree58520d3227798af6bdd60f90dae750c6ac58e933 /Lib/test/test_argparse.py
parent5dbe0f59b7a4f39c7c606b48056bc29e406ebf78 (diff)
downloadcpython-git-da27d9b9dc44913ffee8f28d9638985eaaa03755.tar.gz
bpo-29553: Fix ArgumentParser.format_usage() for mutually exclusive groups (GH-14976)
Co-authored-by: Andrew Nester <andrew.nester.dev@gmail.com>
Diffstat (limited to 'Lib/test/test_argparse.py')
-rw-r--r--Lib/test/test_argparse.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py
index d6d16090eb..86ec6cca51 100644
--- a/Lib/test/test_argparse.py
+++ b/Lib/test/test_argparse.py
@@ -2813,6 +2813,46 @@ class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase):
-c c help
'''
+class TestMutuallyExclusiveNested(MEMixin, TestCase):
+
+ def get_parser(self, required):
+ parser = ErrorRaisingArgumentParser(prog='PROG')
+ group = parser.add_mutually_exclusive_group(required=required)
+ group.add_argument('-a')
+ group.add_argument('-b')
+ group2 = group.add_mutually_exclusive_group(required=required)
+ group2.add_argument('-c')
+ group2.add_argument('-d')
+ group3 = group2.add_mutually_exclusive_group(required=required)
+ group3.add_argument('-e')
+ group3.add_argument('-f')
+ return parser
+
+ usage_when_not_required = '''\
+ usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]]
+ '''
+ usage_when_required = '''\
+ usage: PROG [-h] (-a A | -b B | (-c C | -d D | (-e E | -f F)))
+ '''
+
+ help = '''\
+
+ optional arguments:
+ -h, --help show this help message and exit
+ -a A
+ -b B
+ -c C
+ -d D
+ -e E
+ -f F
+ '''
+
+ # We are only interested in testing the behavior of format_usage().
+ test_failures_when_not_required = None
+ test_failures_when_required = None
+ test_successes_when_not_required = None
+ test_successes_when_required = None
+
# =================================================
# Mutually exclusive group in parent parser tests
# =================================================