summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_sys.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2017-11-07 13:59:33 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2017-11-07 13:59:33 (GMT)
commita5dca7d173f9f1d98b13939498269ce3e35b3a07 (patch)
tree1bbeb35657cbdd6dd18cab6380a104597cc79d3b /Lib/test/test_sys.py
parentef6f224ae6cd63f47bd2bf7084b8f982d9825be7 (diff)
downloadcpython-a5dca7d173f9f1d98b13939498269ce3e35b3a07.zip
cpython-a5dca7d173f9f1d98b13939498269ce3e35b3a07.tar.gz
cpython-a5dca7d173f9f1d98b13939498269ce3e35b3a07.tar.bz2
Fix the sizeof test for dicts with shared keys. (GH-4311) (#4312)
By accident the size of the empty dict keys object matched the size of values array. (cherry picked from commit 39a156c505b7dc431a0a4cffcbefca577848db38)
Diffstat (limited to 'Lib/test/test_sys.py')
-rw-r--r--Lib/test/test_sys.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index e151f49..d49e4ab 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -1092,6 +1092,7 @@ class SizeofTest(unittest.TestCase):
fmt += '3n2P'
s = vsize(fmt)
check(int, s)
+ # class
s = vsize(fmt + # PyTypeObject
'3P' # PyAsyncMethods
'36P' # PyNumberMethods
@@ -1099,13 +1100,17 @@ class SizeofTest(unittest.TestCase):
'10P' # PySequenceMethods
'2P' # PyBufferProcs
'4P')
- # Separate block for PyDictKeysObject with 8 keys and 5 entries
- s += calcsize("2nP2n") + 8 + 5*calcsize("n2P")
- # class
class newstyleclass(object): pass
- check(newstyleclass, s)
+ # Separate block for PyDictKeysObject with 8 keys and 5 entries
+ check(newstyleclass, s + calcsize("2nP2n0P") + 8 + 5*calcsize("n2P"))
+ # dict with shared keys
+ check(newstyleclass().__dict__, size('nQ2P') + 5*self.P)
+ o = newstyleclass()
+ o.a = o.b = o.c = o.d = o.e = o.f = o.g = o.h = 1
+ # Separate block for PyDictKeysObject with 16 keys and 10 entries
+ check(newstyleclass, s + calcsize("2nP2n0P") + 16 + 10*calcsize("n2P"))
# dict with shared keys
- check(newstyleclass().__dict__, size('nQ2P' + '2nP2n'))
+ check(newstyleclass().__dict__, size('nQ2P') + 10*self.P)
# unicode
# each tuple contains a string and its expected character size
# don't put any static strings here, as they may contain