1717
1818import math
1919import unittest
20- from sys import float_info , getrefcount
20+ from sys import float_info
2121from typing import Callable
2222
2323import thrift .python .types # noqa: F401
@@ -195,104 +195,59 @@ def test_iobuf_heap(self) -> None:
195195class TestMarshalList (MarshalFixture ):
196196 # Use the internal representation, which is tuple for lists
197197 def test_int32_list (self ) -> None :
198- # store refcounts of singletons for leak checks
199- int_refcount = getrefcount (- 1 )
200- empty_tuple_refcount = getrefcount (())
201-
202198 def make_list ():
203199 return (0 , - 1 , INT32_MIN , INT32_MAX )
204200
205201 self .assertEqual (make_list (), fixture .roundtrip_int32_list (make_list ()))
206202 self .assertEqual ((), fixture .roundtrip_int32_list (()))
207- # no leaks!
208- self .assertEqual (int_refcount , getrefcount (- 1 ))
209- self .assertEqual (empty_tuple_refcount , getrefcount (()))
210203
211204 def test_bool_list (self ) -> None :
212- # store refcounts of singletons for leak checks
213- false_refcount = getrefcount (False )
214- empty_tuple_refcount = getrefcount (())
215-
216205 def make_list ():
217206 return (True , False , False , False , True , False )
218207
219208 self .assertEqual (make_list (), fixture .roundtrip_bool_list (make_list ()))
220209 self .assertEqual ((), fixture .roundtrip_bool_list (()))
221- # no leaks!
222- self .assertEqual (false_refcount , getrefcount (False ))
223- self .assertEqual (empty_tuple_refcount , getrefcount (()))
224210
225211 def test_double_list (self ) -> None :
226- # no float singletons afaik
227- empty_tuple_refcount = getrefcount (())
228-
229212 def make_list ():
230213 return (- 1.0 , 0.0 , - float_info .max , float_info .max )
231214
232215 self .assertEqual (make_list (), fixture .roundtrip_double_list (make_list ()))
233216 self .assertEqual ((), fixture .roundtrip_double_list (()))
234- # no leaks!
235- self .assertEqual (empty_tuple_refcount , getrefcount (()))
236217
237218 def test_bytes_list (self ) -> None :
238- # empty bytes is a singleton like empty tuple
239- empty_refcount = getrefcount (b"" )
240- empty_tuple_refcount = getrefcount (())
241-
242219 def make_list ():
243220 return (b"" , b"-1" , b"wef2" , b"\xe2 \x82 \xac " )
244221
245222 self .assertEqual (make_list (), fixture .roundtrip_bytes_list (make_list ()))
246223 self .assertEqual ((), fixture .roundtrip_bytes_list (()))
247- # no leaks!
248- self .assertEqual (empty_refcount , getrefcount (b"" ))
249- self .assertEqual (empty_tuple_refcount , getrefcount (()))
250224
251225 def test_unicode_list (self ) -> None :
252- # empty str is a singleton like empty tuple
253- empty_refcount = getrefcount ("" )
254- empty_tuple_refcount = getrefcount (())
255-
256226 def make_list ():
257227 return ("" , "-1" , "€" , "" , b"\xe2 \x82 \xac " .decode ())
258228
259229 self .assertEqual (make_list (), fixture .roundtrip_unicode_list (make_list ()))
260230 self .assertEqual ((), fixture .roundtrip_unicode_list (()))
261- # no leaks!
262- self .assertEqual (empty_refcount , getrefcount ("" ))
263- self .assertEqual (empty_tuple_refcount , getrefcount (()))
264231
265232 with self .assertRaises (UnicodeDecodeError ):
266233 fixture .make_unicode_list ((b"" , b"" , b"" , b"" , b"\xe2 \x82 " ))
267- # The empty str created before error are not leaked
268- self .assertEqual (empty_refcount , getrefcount ("" ))
269234
270235
271236class TestMarshalSet (MarshalFixture ):
272237 # Use the internal representation, which is frozenset
273238 def test_int32_set (self ) -> None :
274- # store refcounts of singletons for leak checks
275- int_refcount = getrefcount (- 1 )
276-
277239 def make_set ():
278240 return frozenset ({0 , - 1 , INT32_MIN , INT32_MAX })
279241
280242 self .assertEqual (make_set (), fixture .roundtrip_int32_set (make_set ()))
281243 self .assertEqual (frozenset (), fixture .roundtrip_int32_set (frozenset ()))
282- # no leaks!
283- self .assertEqual (int_refcount , getrefcount (- 1 ))
284244
285245 def test_bool_set (self ) -> None :
286- # store refcounts of singletons for leak checks
287- false_refcount = getrefcount (False )
288-
289246 def make_set ():
290247 return frozenset ({True , False })
291248
292249 self .assertEqual (make_set (), fixture .roundtrip_bool_set (make_set ()))
293250 self .assertEqual (frozenset (), fixture .roundtrip_bool_set (frozenset ()))
294- # no leaks!
295- self .assertEqual (false_refcount , getrefcount (False ))
296251
297252 def test_double_set (self ) -> None :
298253 def make_set ():
@@ -302,129 +257,61 @@ def make_set():
302257 self .assertEqual (frozenset (), fixture .roundtrip_double_set (frozenset ()))
303258
304259 def test_bytes_set (self ) -> None :
305- # empty bytes is a singleton like empty tuple
306- empty_refcount = getrefcount (b"" )
307-
308260 def make_set ():
309261 return frozenset ({b"" , b"-1" , b"wef2" , b"\xe2 \x82 \xac " })
310262
311263 self .assertEqual (make_set (), fixture .roundtrip_bytes_set (make_set ()))
312264 self .assertEqual (frozenset (), fixture .roundtrip_bytes_set (frozenset ()))
313- # no leaks!
314- self .assertEqual (empty_refcount , getrefcount (b"" ))
315265
316266 def test_unicode_set (self ) -> None :
317- # empty str is a singleton like empty tuple
318- empty_refcount = getrefcount ("" )
319-
320267 def make_set ():
321268 return frozenset ({"" , "-1" , "€" , b"\xe2 \x82 \xac " .decode ()})
322269
323270 self .assertEqual (make_set (), fixture .roundtrip_unicode_set (make_set ()))
324271 self .assertEqual (frozenset (), fixture .roundtrip_unicode_set (frozenset ()))
325- # no leaks!
326- self .assertEqual (empty_refcount , getrefcount ("" ))
327272
328273 with self .assertRaises (UnicodeDecodeError ):
329274 fixture .make_unicode_set (frozenset ((b"" , b"a" , b"c" , b"e" , b"\xe2 \x82 " )))
330- # The empty str created before error are not leaked
331- self .assertEqual (empty_refcount , getrefcount ("" ))
332275
333276
334277class TestMarshalMap (MarshalFixture ):
335278 # Use the internal representation, which is tuple of (k, v) tuples.
336279 def test_int32_bool_map (self ) -> None :
337- # store refcounts of singletons for leak checks
338- nil_refcount = getrefcount (0 )
339- int_refcount = getrefcount (- 1 )
340- true_refcount = getrefcount (True )
341- false_refcount = getrefcount (False )
342-
343280 def make_dict ():
344281 return {x : x % 2 == 0 for x in [INT32_MIN , - 1 , 0 , INT32_MAX ]}
345282
346283 self .assertEqual (make_dict (), fixture .roundtrip_int32_bool_map (make_dict ()))
347284 self .assertEqual ({}, fixture .roundtrip_int32_bool_map ({}))
348- # no leaks!
349- self .assertEqual (nil_refcount , getrefcount (0 ))
350- self .assertEqual (int_refcount , getrefcount (- 1 ))
351- self .assertEqual (true_refcount , getrefcount (True ))
352- self .assertEqual (false_refcount , getrefcount (False ))
353285
354286 def test_byte_float_map (self ) -> None :
355- # store refcounts of singletons for leak checks
356- nil_refcount = getrefcount (0 )
357- int_refcount = getrefcount (- 1 )
358- ace_refcount = getrefcount (1 )
359-
360287 def make_dict ():
361288 return {x : x / 13.0 for x in [INT8_MIN , - 1 , 0 , 1 , INT8_MAX ]}
362289
363290 self .assertEqual (make_dict (), fixture .roundtrip_byte_float_map (make_dict ()))
364291 self .assertEqual ({}, fixture .roundtrip_byte_float_map ({}))
365- # no leaks!
366- self .assertEqual (nil_refcount , getrefcount (0 ))
367- self .assertEqual (int_refcount , getrefcount (- 1 ))
368- self .assertEqual (ace_refcount , getrefcount (1 ))
369292
370293 def test_bytes_key_map (self ) -> None :
371- # store refcounts of singletons for leak checks
372- nil_refcount = getrefcount (0 )
373- int_refcount = getrefcount (- 1 )
374- ace_refcount = getrefcount (1 )
375-
376294 def make_dict ():
377295 return {b"" : - 1 , b"asdfwe" : 0 , b"wdfwe" : 1 }
378296
379297 self .assertEqual (make_dict (), fixture .roundtrip_bytes_key_map (make_dict ()))
380298 self .assertEqual ({}, fixture .roundtrip_bytes_key_map ({}))
381299
382- # no leaks!
383- self .assertEqual (nil_refcount , getrefcount (0 ))
384- self .assertEqual (int_refcount , getrefcount (- 1 ))
385- self .assertEqual (ace_refcount , getrefcount (1 ))
386-
387300 def test_bytes_val_map (self ) -> None :
388- # store refcounts of singletons for leak checks
389- nil_refcount = getrefcount (0 )
390- int_refcount = getrefcount (- 1 )
391- ace_refcount = getrefcount (1 )
392-
393301 def make_dict ():
394302 return {- 1 : b"" , 0 : b"asdfwe" , 1 : b"wdfwe" }
395303
396304 self .assertEqual (make_dict (), fixture .roundtrip_bytes_val_map (make_dict ()))
397305 self .assertEqual ({}, fixture .roundtrip_bytes_val_map ({}))
398306
399- # no leaks!
400- self .assertEqual (nil_refcount , getrefcount (0 ))
401- self .assertEqual (int_refcount , getrefcount (- 1 ))
402- self .assertEqual (ace_refcount , getrefcount (1 ))
403-
404307 def test_unicode_key_map (self ) -> None :
405- # store refcounts of singletons for leak checks
406- nil_refcount = getrefcount (0 )
407- int_refcount = getrefcount (- 1 )
408- ace_refcount = getrefcount (1 )
409-
410308 def make_dict ():
411309 return {"" : - 1 , "asdfwe" : 0 , "wdfwe" : 1 }
412310
413311 self .assertEqual (make_dict (), fixture .roundtrip_unicode_key_map (make_dict ()))
414312 self .assertEqual ({}, fixture .roundtrip_unicode_key_map ({}))
415313
416- # no leaks!
417- self .assertEqual (nil_refcount , getrefcount (0 ))
418- self .assertEqual (int_refcount , getrefcount (- 1 ))
419- self .assertEqual (ace_refcount , getrefcount (1 ))
420-
421314 def test_unicode_val_map (self ) -> None :
422- # store refcounts of singletons for leak checks
423- nil_refcount = getrefcount (0 )
424- int_refcount = getrefcount (- 1 )
425- ace_refcount = getrefcount (1 )
426- empty_refcount = getrefcount ("" )
427-
428315 def make_dict ():
429316 return {- 1 : "" , 0 : "asdfwe" , 1 : "wdfwe" }
430317
@@ -434,15 +321,5 @@ def make_dict():
434321 )
435322 self .assertEqual ({}, fixture .roundtrip_unicode_val_map ({}))
436323
437- # no leaks!
438- self .assertEqual (nil_refcount , getrefcount (0 ))
439- self .assertEqual (int_refcount , getrefcount (- 1 ))
440- self .assertEqual (ace_refcount , getrefcount (1 ))
441-
442324 with self .assertRaises (UnicodeDecodeError ):
443325 fixture .make_unicode_val_map ({- 1 : b"" , 0 : b"a" , 1 : b"\xe2 \x82 " })
444-
445- self .assertEqual (nil_refcount , getrefcount (0 ))
446- self .assertEqual (int_refcount , getrefcount (- 1 ))
447- self .assertEqual (ace_refcount , getrefcount (1 ))
448- self .assertEqual (empty_refcount , getrefcount ("" ))
0 commit comments