gh-59598: Ignore leading whitespace in JSONDecoder.raw_decode

Whitespace is allowed before JSON objects according to RFC 4627.
This commit is contained in:
Ankit Goel 2024-03-31 00:27:09 +00:00
parent 91b7f2e7f6
commit 96963f1e97
4 changed files with 25 additions and 3 deletions

View file

@ -124,6 +124,20 @@ def test_limit_int(self):
with self.assertRaises(ValueError):
self.loads('1' * (maxdigits + 1))
class TestRawDecode:
def test_whitespace(self):
decoder = self.json.JSONDecoder()
self.assertEqual(decoder.raw_decode(' {}'), ({}, 3))
self.assertEqual(decoder.raw_decode(' []'), ([], 4))
self.assertEqual(decoder.raw_decode(' ""'), ('', 5))
s = ' { "key" : "value" , "k":"v" } \n' \
' { "key": "value", "k" :"v"} '
val1, n1 = decoder.raw_decode(s)
val2, n2 = decoder.raw_decode(s[n1:])
self.assertEqual(val1, {"key":"value", "k":"v"})
self.assertEqual(val2, {"key":"value", "k":"v"})
class TestPyDecode(TestDecode, PyTest): pass
class TestCDecode(TestDecode, CTest): pass
class TestPyRawDecode(TestRawDecode, PyTest): pass
class TestCRawDecode(TestRawDecode, CTest): pass