Closes #21999: Handled empty strings correctly when in POSIX mode.

This commit is contained in:
Vinay Sajip 2016-08-09 15:04:49 +01:00
parent f68afd8544
commit 085e806798
2 changed files with 13 additions and 1 deletions

View File

@ -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

View File

@ -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