diff options
author | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2016-08-09 14:04:49 (GMT) |
---|---|---|
committer | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2016-08-09 14:04:49 (GMT) |
commit | 085e806798f4f70e70a9c8cba31f240d8fd668b3 (patch) | |
tree | 66ae2b4de160d560b5fab3a93a2e05e2d2df2a25 | |
parent | f68afd8544796e23115a6f25b008c153a1414aad (diff) | |
download | cpython-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.py | 2 | ||||
-rw-r--r-- | Lib/test/test_shlex.py | 12 |
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 |