[3.12] gh-109475: Fix support of explicit option value "--" in argparse (GH-114814) (GH-115036)

For example "--option=--".
(cherry picked from commit 4aa4f0906d)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Miss Islington (bot) 2024-02-05 22:02:00 +01:00 committed by GitHub
parent 21f06a22c0
commit 94ad68264c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 19 additions and 1 deletions

View file

@ -5332,6 +5332,22 @@ class TestParseKnownArgs(TestCase):
args = parser.parse_args([])
self.assertEqual(NS(x=[]), args)
def test_double_dash(self):
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--foo', nargs='*')
parser.add_argument('bar', nargs='*')
args = parser.parse_args(['--foo=--'])
self.assertEqual(NS(foo=['--'], bar=[]), args)
args = parser.parse_args(['--foo', '--'])
self.assertEqual(NS(foo=[], bar=[]), args)
args = parser.parse_args(['-f--'])
self.assertEqual(NS(foo=['--'], bar=[]), args)
args = parser.parse_args(['-f', '--'])
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)
# ===========================
# parse_intermixed_args tests