[Python-checkins] cpython (merge 3.6 -> default): Closes #29132: Merged fix from 3.6.
vinay.sajip
python-checkins at python.org
Sun Jan 15 05:08:02 EST 2017
https://hg.python.org/cpython/rev/c163a76163f7
changeset: 106158:c163a76163f7
parent: 106156:5c48fbe12cb8
parent: 106157:7e40c940df14
user: Vinay Sajip <vinay_sajip at yahoo.co.uk>
date: Sun Jan 15 10:07:56 2017 +0000
summary:
Closes #29132: Merged fix from 3.6.
files:
Lib/shlex.py | 10 +++++-----
Lib/test/test_shlex.py | 8 ++++++++
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/Lib/shlex.py b/Lib/shlex.py
--- a/Lib/shlex.py
+++ b/Lib/shlex.py
@@ -232,11 +232,6 @@
break # emit current token
else:
continue
- elif self.posix and nextchar in self.quotes:
- self.state = nextchar
- elif self.posix and nextchar in self.escape:
- escapedstate = 'a'
- self.state = nextchar
elif self.state == 'c':
if nextchar in self.punctuation_chars:
self.token += nextchar
@@ -245,6 +240,11 @@
self._pushback_chars.append(nextchar)
self.state = ' '
break
+ elif self.posix and nextchar in self.quotes:
+ self.state = nextchar
+ elif self.posix and nextchar in self.escape:
+ escapedstate = 'a'
+ self.state = nextchar
elif (nextchar in self.wordchars or nextchar in self.quotes
or self.whitespace_split):
self.token += nextchar
diff --git a/Lib/test/test_shlex.py b/Lib/test/test_shlex.py
--- a/Lib/test/test_shlex.py
+++ b/Lib/test/test_shlex.py
@@ -273,6 +273,14 @@
# white space
self.assertEqual(list(s), ['a', '&&', 'b', '||', 'c'])
+ def testPunctuationWithPosix(self):
+ """Test that punctuation_chars and posix behave correctly together."""
+ # see Issue #29132
+ s = shlex.shlex('f >"abc"', posix=True, punctuation_chars=True)
+ self.assertEqual(list(s), ['f', '>', 'abc'])
+ s = shlex.shlex('f >\\"abc\\"', posix=True, punctuation_chars=True)
+ self.assertEqual(list(s), ['f', '>', '"abc"'])
+
def testEmptyStringHandling(self):
"""Test that parsing of empty strings is correctly handled."""
# see Issue #21999
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list