File tree Expand file tree Collapse file tree 2 files changed +30
-33
lines changed
Expand file tree Collapse file tree 2 files changed +30
-33
lines changed Original file line number Diff line number Diff line change @@ -65,39 +65,6 @@ def __lt__(self, o):
6565 d [1337 ] = "true.dat"
6666 self .assertEqual (self .dumps (d , sort_keys = True ), '{"1337": "true.dat"}' )
6767
68- def test_mutate_items_during_encode (self ):
69- c_make_encoder = getattr (self .json .encoder , 'c_make_encoder' , None )
70- if c_make_encoder is None :
71- self .skipTest ("c_make_encoder not available" )
72-
73- cache = []
74-
75- class BadDict (dict ):
76- def __init__ (self ):
77- super ().__init__ (real = 1 )
78-
79- def items (self ):
80- entries = [("boom" , object ())]
81- cache .append (entries )
82- return entries
83-
84- def encode_str (obj ):
85- if cache :
86- cache .pop ().clear ()
87- return '"x"'
88-
89- encoder = c_make_encoder (
90- None , lambda o : "null" ,
91- encode_str , None ,
92- ": " , ", " , False ,
93- False , True
94- )
95-
96- try :
97- encoder (BadDict (), 0 )
98- except (ValueError , RuntimeError ):
99- pass
100-
10168
10269class TestPyDump (TestDump , PyTest ): pass
10370
Original file line number Diff line number Diff line change @@ -80,3 +80,33 @@ def test(name):
8080 def test_unsortable_keys (self ):
8181 with self .assertRaises (TypeError ):
8282 self .json .encoder .JSONEncoder (sort_keys = True ).encode ({'a' : 1 , 1 : 'a' })
83+
84+ def test_mutate_items_during_encode (self ):
85+ c_make_encoder = getattr (self .json .encoder , 'c_make_encoder' , None )
86+ if c_make_encoder is None :
87+ self .skipTest ("c_make_encoder not available" )
88+
89+ cache = []
90+
91+ class BadDict (dict ):
92+ def items (self ):
93+ entries = [("boom" , object ())]
94+ cache .append (entries )
95+ return entries
96+
97+ def encode_str (obj ):
98+ if cache :
99+ cache .pop ().clear ()
100+ return '"x"'
101+
102+ encoder = c_make_encoder (
103+ None , lambda o : "null" ,
104+ encode_str , None ,
105+ ": " , ", " , False ,
106+ False , True
107+ )
108+
109+ try :
110+ encoder (BadDict (real = 1 ), 0 )
111+ except (ValueError , RuntimeError ):
112+ pass
You can’t perform that action at this time.
0 commit comments