#16559: merge with 3.2.
This commit is contained in:
commit
c483034048
|
@ -1,13 +1,13 @@
|
||||||
from test.json_tests import PyTest, CTest
|
from test.json_tests import PyTest, CTest
|
||||||
|
|
||||||
# Fri Dec 30 18:57:26 2005
|
# 2007-10-05
|
||||||
JSONDOCS = [
|
JSONDOCS = [
|
||||||
# http://json.org/JSON_checker/test/fail1.json
|
# http://json.org/JSON_checker/test/fail1.json
|
||||||
'"A JSON payload should be an object or array, not a string."',
|
'"A JSON payload should be an object or array, not a string."',
|
||||||
# http://json.org/JSON_checker/test/fail2.json
|
# http://json.org/JSON_checker/test/fail2.json
|
||||||
'["Unclosed array"',
|
'["Unclosed array"',
|
||||||
# http://json.org/JSON_checker/test/fail3.json
|
# http://json.org/JSON_checker/test/fail3.json
|
||||||
'{unquoted_key: "keys must be quoted}',
|
'{unquoted_key: "keys must be quoted"}',
|
||||||
# http://json.org/JSON_checker/test/fail4.json
|
# http://json.org/JSON_checker/test/fail4.json
|
||||||
'["extra comma",]',
|
'["extra comma",]',
|
||||||
# http://json.org/JSON_checker/test/fail5.json
|
# http://json.org/JSON_checker/test/fail5.json
|
||||||
|
@ -33,7 +33,7 @@ JSONDOCS = [
|
||||||
# http://json.org/JSON_checker/test/fail15.json
|
# http://json.org/JSON_checker/test/fail15.json
|
||||||
'["Illegal backslash escape: \\x15"]',
|
'["Illegal backslash escape: \\x15"]',
|
||||||
# http://json.org/JSON_checker/test/fail16.json
|
# http://json.org/JSON_checker/test/fail16.json
|
||||||
'["Illegal backslash escape: \\\'"]',
|
'[\\naked]',
|
||||||
# http://json.org/JSON_checker/test/fail17.json
|
# http://json.org/JSON_checker/test/fail17.json
|
||||||
'["Illegal backslash escape: \\017"]',
|
'["Illegal backslash escape: \\017"]',
|
||||||
# http://json.org/JSON_checker/test/fail18.json
|
# http://json.org/JSON_checker/test/fail18.json
|
||||||
|
@ -50,6 +50,24 @@ JSONDOCS = [
|
||||||
'["Bad value", truth]',
|
'["Bad value", truth]',
|
||||||
# http://json.org/JSON_checker/test/fail24.json
|
# http://json.org/JSON_checker/test/fail24.json
|
||||||
"['single quote']",
|
"['single quote']",
|
||||||
|
# http://json.org/JSON_checker/test/fail25.json
|
||||||
|
'["\ttab\tcharacter\tin\tstring\t"]',
|
||||||
|
# http://json.org/JSON_checker/test/fail26.json
|
||||||
|
'["tab\\ character\\ in\\ string\\ "]',
|
||||||
|
# http://json.org/JSON_checker/test/fail27.json
|
||||||
|
'["line\nbreak"]',
|
||||||
|
# http://json.org/JSON_checker/test/fail28.json
|
||||||
|
'["line\\\nbreak"]',
|
||||||
|
# http://json.org/JSON_checker/test/fail29.json
|
||||||
|
'[0e]',
|
||||||
|
# http://json.org/JSON_checker/test/fail30.json
|
||||||
|
'[0e+]',
|
||||||
|
# http://json.org/JSON_checker/test/fail31.json
|
||||||
|
'[0e+-1]',
|
||||||
|
# http://json.org/JSON_checker/test/fail32.json
|
||||||
|
'{"Comma instead if closing brace": true,',
|
||||||
|
# http://json.org/JSON_checker/test/fail33.json
|
||||||
|
'["mismatch"}',
|
||||||
# http://code.google.com/p/simplejson/issues/detail?id=3
|
# http://code.google.com/p/simplejson/issues/detail?id=3
|
||||||
'["A\u001FZ control characters in string"]',
|
'["A\u001FZ control characters in string"]',
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,6 +13,21 @@ class TestFloat:
|
||||||
self.assertEqual(self.dumps(num), str(num))
|
self.assertEqual(self.dumps(num), str(num))
|
||||||
self.assertEqual(int(self.dumps(num)), num)
|
self.assertEqual(int(self.dumps(num)), num)
|
||||||
|
|
||||||
|
def test_out_of_range(self):
|
||||||
|
self.assertEqual(self.loads('[23456789012E666]'), [float('inf')])
|
||||||
|
self.assertEqual(self.loads('[-23456789012E666]'), [float('-inf')])
|
||||||
|
|
||||||
|
def test_allow_nan(self):
|
||||||
|
for val in (float('inf'), float('-inf'), float('nan')):
|
||||||
|
out = self.dumps([val])
|
||||||
|
if val == val: # inf
|
||||||
|
self.assertEqual(self.loads(out), [val])
|
||||||
|
else: # nan
|
||||||
|
res = self.loads(out)
|
||||||
|
self.assertEqual(len(res), 1)
|
||||||
|
self.assertNotEqual(res[0], res[0])
|
||||||
|
self.assertRaises(ValueError, self.dumps, [val], allow_nan=False)
|
||||||
|
|
||||||
|
|
||||||
class TestPyFloat(TestFloat, PyTest): pass
|
class TestPyFloat(TestFloat, PyTest): pass
|
||||||
class TestCFloat(TestFloat, CTest): pass
|
class TestCFloat(TestFloat, CTest): pass
|
||||||
|
|
|
@ -17,7 +17,7 @@ JSON = r'''
|
||||||
"real": -9876.543210,
|
"real": -9876.543210,
|
||||||
"e": 0.123456789e-12,
|
"e": 0.123456789e-12,
|
||||||
"E": 1.234567890E+34,
|
"E": 1.234567890E+34,
|
||||||
"": 23456789012E666,
|
"": 23456789012E66,
|
||||||
"zero": 0,
|
"zero": 0,
|
||||||
"one": 1,
|
"one": 1,
|
||||||
"space": " ",
|
"space": " ",
|
||||||
|
@ -28,6 +28,7 @@ JSON = r'''
|
||||||
"alpha": "abcdefghijklmnopqrstuvwyz",
|
"alpha": "abcdefghijklmnopqrstuvwyz",
|
||||||
"ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
|
"ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
|
||||||
"digit": "0123456789",
|
"digit": "0123456789",
|
||||||
|
"0123456789": "digit",
|
||||||
"special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
|
"special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
|
||||||
"hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
|
"hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
|
||||||
"true": true,
|
"true": true,
|
||||||
|
@ -43,8 +44,7 @@ JSON = r'''
|
||||||
|
|
||||||
,
|
,
|
||||||
|
|
||||||
4 , 5 , 6 ,7 ],
|
4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7],
|
||||||
"compact": [1,2,3,4,5,6,7],
|
|
||||||
"jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
|
"jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
|
||||||
"quotes": "" \u0022 %22 0x22 034 "",
|
"quotes": "" \u0022 %22 0x22 034 "",
|
||||||
"\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
|
"\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
|
||||||
|
@ -55,9 +55,11 @@ JSON = r'''
|
||||||
99.44
|
99.44
|
||||||
,
|
,
|
||||||
|
|
||||||
1066
|
1066,
|
||||||
|
1e1,
|
||||||
|
0.1e1,
|
||||||
|
1e-1,
|
||||||
|
1e00,2e+00,2e-00
|
||||||
,"rosebud"]
|
,"rosebud"]
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
@ -67,12 +69,6 @@ class TestPass1:
|
||||||
res = self.loads(JSON)
|
res = self.loads(JSON)
|
||||||
out = self.dumps(res)
|
out = self.dumps(res)
|
||||||
self.assertEqual(res, self.loads(out))
|
self.assertEqual(res, self.loads(out))
|
||||||
try:
|
|
||||||
self.dumps(res, allow_nan=False)
|
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
self.fail("23456789012E666 should be out of range")
|
|
||||||
|
|
||||||
|
|
||||||
class TestPyPass1(TestPass1, PyTest): pass
|
class TestPyPass1(TestPass1, PyTest): pass
|
||||||
|
|
|
@ -250,6 +250,9 @@ Library
|
||||||
Tests
|
Tests
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #16559: Add more tests for the json module, including some from the
|
||||||
|
official test suite at json.org. Patch by Serhiy Storchaka.
|
||||||
|
|
||||||
- Issue #16115: Add some tests for the executable argument to
|
- Issue #16115: Add some tests for the executable argument to
|
||||||
subprocess.Popen(). Initial patch by Kushal Das.
|
subprocess.Popen(). Initial patch by Kushal Das.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue