summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_argparse.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_argparse.py')
-rw-r--r--Lib/test/test_argparse.py60
1 files changed, 59 insertions, 1 deletions
diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py
index 435db65..6098818 100644
--- a/Lib/test/test_argparse.py
+++ b/Lib/test/test_argparse.py
@@ -5721,7 +5721,30 @@ class TestParseKnownArgs(TestCase):
self.assertEqual(NS(x=[]), args)
def test_double_dash(self):
- parser = argparse.ArgumentParser()
+ parser = argparse.ArgumentParser(exit_on_error=False)
+ parser.add_argument('-f', '--foo')
+ parser.add_argument('bar', nargs='*')
+
+ args = parser.parse_args(['--foo=--'])
+ self.assertEqual(NS(foo='--', bar=[]), args)
+ self.assertRaisesRegex(argparse.ArgumentError,
+ 'argument -f/--foo: expected one argument',
+ parser.parse_args, ['--foo', '--'])
+ args = parser.parse_args(['-f--'])
+ self.assertEqual(NS(foo='--', bar=[]), args)
+ self.assertRaisesRegex(argparse.ArgumentError,
+ 'argument -f/--foo: expected one argument',
+ parser.parse_args, ['-f', '--'])
+ args = parser.parse_args(['--foo', 'a', '--', 'b', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', 'c']), args)
+ args = parser.parse_args(['a', 'b', '--foo', 'c'])
+ self.assertEqual(NS(foo='c', bar=['a', 'b']), args)
+ args = parser.parse_args(['a', '--', 'b', '--foo', 'c'])
+ self.assertEqual(NS(foo=None, bar=['a', 'b', '--foo', 'c']), args)
+ args = parser.parse_args(['a', '--', 'b', '--', 'c', '--foo', 'd'])
+ self.assertEqual(NS(foo=None, bar=['a', 'b', '--', 'c', '--foo', 'd']), args)
+
+ parser = argparse.ArgumentParser(exit_on_error=False)
parser.add_argument('-f', '--foo', nargs='*')
parser.add_argument('bar', nargs='*')
@@ -5735,6 +5758,41 @@ class TestParseKnownArgs(TestCase):
self.assertEqual(NS(foo=[], bar=[]), args)
args = parser.parse_args(['--foo', 'a', 'b', '--', 'c', 'd'])
self.assertEqual(NS(foo=['a', 'b'], bar=['c', 'd']), args)
+ args = parser.parse_args(['a', 'b', '--foo', 'c', 'd'])
+ self.assertEqual(NS(foo=['c', 'd'], bar=['a', 'b']), args)
+ args = parser.parse_args(['a', '--', 'b', '--foo', 'c', 'd'])
+ self.assertEqual(NS(foo=None, bar=['a', 'b', '--foo', 'c', 'd']), args)
+ args, argv = parser.parse_known_args(['a', 'b', '--foo', 'c', '--', 'd'])
+ self.assertEqual(NS(foo=['c'], bar=['a', 'b']), args)
+ self.assertEqual(argv, ['--', 'd'])
+
+ parser = argparse.ArgumentParser(exit_on_error=False)
+ parser.add_argument('foo')
+ parser.add_argument('bar', nargs='*')
+
+ args = parser.parse_args(['--', 'a', 'b', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', 'c']), args)
+ args = parser.parse_args(['a', '--', 'b', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', 'c']), args)
+ args = parser.parse_args(['a', 'b', '--', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', 'c']), args)
+ args = parser.parse_args(['a', '--', 'b', '--', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', '--', 'c']), args)
+ args = parser.parse_args(['--', '--', 'a', '--', 'b', 'c'])
+ self.assertEqual(NS(foo='--', bar=['a', '--', 'b', 'c']), args)
+
+ parser = argparse.ArgumentParser(exit_on_error=False)
+ parser.add_argument('foo')
+ parser.add_argument('bar', nargs=argparse.REMAINDER)
+
+ args = parser.parse_args(['--', 'a', 'b', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', 'c']), args)
+ args = parser.parse_args(['a', '--', 'b', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', 'c']), args)
+ args = parser.parse_args(['a', 'b', '--', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', '--', 'c']), args)
+ args = parser.parse_args(['a', '--', 'b', '--', 'c'])
+ self.assertEqual(NS(foo='a', bar=['b', '--', 'c']), args)
# ===========================