mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
Issue #15467: Move helpers for __sizeof__ tests into test_support.
Patch by Serhiy Storchaka.
This commit is contained in:
parent
90bc2dbcce
commit
33f799725c
4 changed files with 124 additions and 148 deletions
|
|
@ -23,6 +23,9 @@ import time
|
|||
import sysconfig
|
||||
import fnmatch
|
||||
import logging.handlers
|
||||
import struct
|
||||
import tempfile
|
||||
import _testcapi
|
||||
|
||||
try:
|
||||
import _thread, threading
|
||||
|
|
@ -984,6 +987,31 @@ def python_is_optimized():
|
|||
return final_opt and final_opt != '-O0'
|
||||
|
||||
|
||||
_header = '2P'
|
||||
if hasattr(sys, "gettotalrefcount"):
|
||||
_header = '2P' + _header
|
||||
_vheader = _header + 'P'
|
||||
|
||||
def calcobjsize(fmt):
|
||||
return struct.calcsize(_header + fmt + '0P')
|
||||
|
||||
def calcvobjsize(fmt):
|
||||
return struct.calcsize(_vheader + fmt + '0P')
|
||||
|
||||
|
||||
_TPFLAGS_HAVE_GC = 1<<14
|
||||
_TPFLAGS_HEAPTYPE = 1<<9
|
||||
|
||||
def check_sizeof(test, o, size):
|
||||
result = sys.getsizeof(o)
|
||||
# add GC header size
|
||||
if ((type(o) == type) and (o.__flags__ & _TPFLAGS_HEAPTYPE) or\
|
||||
((type(o) != type) and (type(o).__flags__ & _TPFLAGS_HAVE_GC))):
|
||||
size += _testcapi.SIZEOF_PYGC_HEAD
|
||||
msg = 'wrong size for %s: got %d, expected %d' \
|
||||
% (type(o), result, size)
|
||||
test.assertEqual(result, size, msg)
|
||||
|
||||
#=======================================================================
|
||||
# Decorator for running a function in a different locale, correctly resetting
|
||||
# it afterwards.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue