[Python-checkins] cpython (merge 3.5 -> 3.6): Merge 3.6: Issue #28409: regrtest: fix the parser of command line arguments.
victor.stinner
python-checkins at python.org
Mon Oct 17 12:15:38 EDT 2016
https://hg.python.org/cpython/rev/26249f82c15d
changeset: 104522:26249f82c15d
branch: 3.6
parent: 104519:0b29adb5c804
parent: 104521:af06d9616c29
user: Victor Stinner <victor.stinner at gmail.com>
date: Mon Oct 17 18:13:46 2016 +0200
summary:
Merge 3.6: Issue #28409: regrtest: fix the parser of command line arguments.
files:
Lib/test/libregrtest/cmdline.py | 11 +++++++----
Lib/test/test_regrtest.py | 9 +++++++++
Misc/NEWS | 5 +++++
3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/Lib/test/libregrtest/cmdline.py b/Lib/test/libregrtest/cmdline.py
--- a/Lib/test/libregrtest/cmdline.py
+++ b/Lib/test/libregrtest/cmdline.py
@@ -242,9 +242,6 @@
group.add_argument('-P', '--pgo', dest='pgo', action='store_true',
help='enable Profile Guided Optimization training')
- parser.add_argument('args', nargs='*',
- help=argparse.SUPPRESS)
-
return parser
@@ -294,7 +291,13 @@
ns.use_resources = []
parser = _create_parser()
- parser.parse_args(args=args, namespace=ns)
+ # Issue #14191: argparse doesn't support "intermixed" positional and
+ # optional arguments. Use parse_known_args() as workaround.
+ ns.args = parser.parse_known_args(args=args, namespace=ns)[1]
+ for arg in ns.args:
+ if arg.startswith('-'):
+ parser.error("unrecognized arguments: %s" % arg)
+ sys.exit(1)
if ns.single and ns.fromfile:
parser.error("-s and -f don't go together!")
diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py
--- a/Lib/test/test_regrtest.py
+++ b/Lib/test/test_regrtest.py
@@ -299,6 +299,15 @@
self.assertEqual(ns.verbose, 0)
self.assertEqual(ns.args, ['foo'])
+ def test_arg_option_arg(self):
+ ns = libregrtest._parse_args(['test_unaryop', '-v', 'test_binop'])
+ self.assertEqual(ns.verbose, 1)
+ self.assertEqual(ns.args, ['test_unaryop', 'test_binop'])
+
+ def test_unknown_option(self):
+ self.checkError(['--unknown-option'],
+ 'unrecognized arguments: --unknown-option')
+
class BaseTestCase(unittest.TestCase):
TEST_UNIQUE_ID = 1
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -25,6 +25,11 @@
- Issue #28248: Update Windows build to use OpenSSL 1.0.2j.
+Tests
+-----
+
+- Issue #28409: regrtest: fix the parser of command line arguments.
+
What's New in Python 3.6.0 beta 2
=================================
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list