Merge with 3.1.
This commit is contained in:
commit
04c6423fba
|
@ -165,6 +165,12 @@ def JSONObject(s_and_end, strict, scan_once, object_hook, object_pairs_hook,
|
|||
nextchar = s[end:end + 1]
|
||||
# Trivial empty object
|
||||
if nextchar == '}':
|
||||
if object_pairs_hook is not None:
|
||||
result = object_pairs_hook(pairs)
|
||||
return result, end
|
||||
pairs = {}
|
||||
if object_hook is not None:
|
||||
pairs = object_hook(pairs)
|
||||
return pairs, end + 1
|
||||
elif nextchar != '"':
|
||||
raise ValueError(errmsg("Expecting property name", s, end))
|
||||
|
|
|
@ -31,6 +31,11 @@ class TestDecode(TestCase):
|
|||
self.assertTrue(isinstance(rval, float))
|
||||
self.assertEqual(rval, 1.0)
|
||||
|
||||
def test_empty_objects(self):
|
||||
self.assertEqual(json.loads('{}'), {})
|
||||
self.assertEqual(json.loads('[]'), [])
|
||||
self.assertEqual(json.loads('""'), "")
|
||||
|
||||
def test_object_pairs_hook(self):
|
||||
s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'
|
||||
p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4),
|
||||
|
|
|
@ -1,14 +1,19 @@
|
|||
import sys
|
||||
import decimal
|
||||
from unittest import TestCase
|
||||
from unittest import TestCase, skipUnless
|
||||
|
||||
import json
|
||||
import json.decoder
|
||||
|
||||
try:
|
||||
import _json
|
||||
except ImportError:
|
||||
_json = None
|
||||
|
||||
class TestScanString(TestCase):
|
||||
def test_py_scanstring(self):
|
||||
self._test_scanstring(json.decoder.py_scanstring)
|
||||
|
||||
@skipUnless(_json, 'test requires the _json module')
|
||||
def test_c_scanstring(self):
|
||||
if json.decoder.c_scanstring is not None:
|
||||
self._test_scanstring(json.decoder.c_scanstring)
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
from unittest import TestCase
|
||||
from unittest import TestCase, skipUnless
|
||||
|
||||
from json import decoder, encoder, scanner
|
||||
|
||||
try:
|
||||
import _json
|
||||
except ImportError:
|
||||
_json = None
|
||||
|
||||
@skipUnless(_json, 'test requires the _json module')
|
||||
class TestSpeedups(TestCase):
|
||||
def test_scanstring(self):
|
||||
self.assertEqual(decoder.scanstring.__module__, "_json")
|
||||
self.assertTrue(decoder.scanstring is decoder.c_scanstring)
|
||||
self.assertIs(decoder.scanstring, decoder.c_scanstring)
|
||||
|
||||
def test_encode_basestring_ascii(self):
|
||||
self.assertEqual(encoder.encode_basestring_ascii.__module__, "_json")
|
||||
self.assertTrue(encoder.encode_basestring_ascii is
|
||||
encoder.c_encode_basestring_ascii)
|
||||
self.assertIs(encoder.encode_basestring_ascii,
|
||||
encoder.c_encode_basestring_ascii)
|
||||
|
||||
class TestDecode(TestCase):
|
||||
def test_make_scanner(self):
|
||||
|
|
|
@ -53,9 +53,12 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #9233: Fix json.loads('{}') to return a dict (instead of a list), when
|
||||
_json is not available.
|
||||
|
||||
- Issue #11830: Remove unnecessary introspection code in the decimal module.
|
||||
|
||||
- Issue #11703 - urllib2.geturl() does not return correct url when the original
|
||||
- Issue #11703: urllib2.geturl() does not return correct url when the original
|
||||
url contains #fragment.
|
||||
|
||||
- Issue #10019: Fixed regression in json module where an indent of 0 stopped
|
||||
|
|
Loading…
Reference in New Issue