summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2016-08-09 14:04:49 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2016-08-09 14:04:49 (GMT)
commit085e806798f4f70e70a9c8cba31f240d8fd668b3 (patch)
tree66ae2b4de160d560b5fab3a93a2e05e2d2df2a25
parentf68afd8544796e23115a6f25b008c153a1414aad (diff)
downloadcpython-085e806798f4f70e70a9c8cba31f240d8fd668b3.zip
cpython-085e806798f4f70e70a9c8cba31f240d8fd668b3.tar.gz
cpython-085e806798f4f70e70a9c8cba31f240d8fd668b3.tar.bz2
Closes #21999: Handled empty strings correctly when in POSIX mode.
-rw-r--r--Lib/shlex.py2
-rw-r--r--Lib/test/test_shlex.py12
2 files changed, 13 insertions, 1 deletions
diff --git a/Lib/shlex.py b/Lib/shlex.py
index f083918..ecd2efd 100644
--- a/Lib/shlex.py
+++ b/Lib/shlex.py
@@ -224,7 +224,7 @@ class shlex:
if self.debug >= 2:
print("shlex: I see punctuation in word state")
self.state = ' '
- if self.token:
+ if self.token or (self.posix and quoted):
break # emit current token
else:
continue
diff --git a/Lib/test/test_shlex.py b/Lib/test/test_shlex.py
index 4fafdd4..55b533d 100644
--- a/Lib/test/test_shlex.py
+++ b/Lib/test/test_shlex.py
@@ -173,6 +173,18 @@ class ShlexTest(unittest.TestCase):
"%s: %s != %s" %
(self.data[i][0], l, self.data[i][1:]))
+ def testEmptyStringHandling(self):
+ """Test that parsing of empty strings is correctly handled."""
+ # see Issue #21999
+ expected = ['', ')', 'abc']
+
+ s = shlex.shlex("'')abc", posix=True)
+ slist = list(s)
+ self.assertEqual(slist, expected)
+ expected = ["''", ')', 'abc']
+ s = shlex.shlex("'')abc")
+ self.assertEqual(list(s), expected)
+
def testQuote(self):
safeunquoted = string.ascii_letters + string.digits + '@%_-+=:,./'
unicode_sample = '\xe9\xe0\xdf' # e + acute accent, a + grave, sharp s