Skip to content

Commit d3aaa2f

Browse files
bpo-30911: Add tests for bad boolean arguments for accelerated json (#2690)
encoder and decoder.
1 parent 541bd28 commit d3aaa2f

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

Lib/test/test_json/test_speedups.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
from test.test_json import CTest
22

33

4+
class BadBool:
5+
def __bool__(self):
6+
1/0
7+
8+
49
class TestSpeedups(CTest):
510
def test_scanstring(self):
611
self.assertEqual(self.json.decoder.scanstring.__module__, "_json")
@@ -17,8 +22,25 @@ class TestDecode(CTest):
1722
def test_make_scanner(self):
1823
self.assertRaises(AttributeError, self.json.scanner.c_make_scanner, 1)
1924

25+
def test_bad_bool_args(self):
26+
def test(value):
27+
self.json.decoder.JSONDecoder(strict=BadBool()).decode(value)
28+
self.assertRaises(ZeroDivisionError, test, '""')
29+
self.assertRaises(ZeroDivisionError, test, '{}')
30+
31+
32+
class TestEncode(CTest):
2033
def test_make_encoder(self):
2134
self.assertRaises(TypeError, self.json.encoder.c_make_encoder,
2235
(True, False),
2336
b"\xCD\x7D\x3D\x4E\x12\x4C\xF9\x79\xD7\x52\xBA\x82\xF2\x27\x4A\x7D\xA0\xCA\x75",
2437
None)
38+
39+
def test_bad_bool_args(self):
40+
def test(name):
41+
self.json.encoder.JSONEncoder(**{name: BadBool()}).encode({'a': 1})
42+
self.assertRaises(ZeroDivisionError, test, 'skipkeys')
43+
self.assertRaises(ZeroDivisionError, test, 'ensure_ascii')
44+
self.assertRaises(ZeroDivisionError, test, 'check_circular')
45+
self.assertRaises(ZeroDivisionError, test, 'allow_nan')
46+
self.assertRaises(ZeroDivisionError, test, 'sort_keys')

0 commit comments

Comments
 (0)