annotate Lib/test/test_sys.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents adb471b9cba1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 46769
diff changeset
1 import unittest, test.support
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
2 import sys, io, os
48382
ef9270374844 Merged revisions 64518,64521-64525,64528-64533 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48321
diff changeset
3 import struct
52145
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
4 import subprocess
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
5 import textwrap
57218
32335ba3aa0b Silence getcheckinterval()-related warnings in the test suite
Antoine Pitrou <solipsis@pitrou.net>
parents: 57175
diff changeset
6 import warnings
58507
7379cf70fd60 Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58473
diff changeset
7 import operator
64170
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
8 import codecs
80777
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
9 import gc
80923
a85673b55177 Following issue #13390, fix compilation --without-pymalloc, and make sys.getallocatedblocks() return 0 in that situation.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80777
diff changeset
10 import sysconfig
87288
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
11 import platform
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
12
56921
ad61129c4422 Merged revisions 75889 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
13 # count the number of test runs, used to create unique
ad61129c4422 Merged revisions 75889 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
14 # strings to intern in test_intern()
ad61129c4422 Merged revisions 75889 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
15 numruns = 0
ad61129c4422 Merged revisions 75889 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
16
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60016
diff changeset
17 try:
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60016
diff changeset
18 import threading
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60016
diff changeset
19 except ImportError:
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60016
diff changeset
20 threading = None
56921
ad61129c4422 Merged revisions 75889 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
21
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
22 class SysModuleTest(unittest.TestCase):
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
23
43788
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
24 def setUp(self):
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
25 self.orig_stdout = sys.stdout
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
26 self.orig_stderr = sys.stderr
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
27 self.orig_displayhook = sys.displayhook
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
28
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
29 def tearDown(self):
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
30 sys.stdout = self.orig_stdout
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
31 sys.stderr = self.orig_stderr
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
32 sys.displayhook = self.orig_displayhook
56874
955d8fa12ad5 Merged revisions 75842 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 56716
diff changeset
33 test.support.reap_children()
43788
7bd72c56f6a4 Reset original sys.stdout, stderr and displayhook even in the case of an error
Christian Heimes <christian@cheimes.de>
parents: 43777
diff changeset
34
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
35 def test_original_displayhook(self):
44098
0889daf6d0d9 #1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents: 44086
diff changeset
36 import builtins
42501
f6069f9dd52d SF patch# 1770008 by Christian Heimes (plus some extras).
Guido van Rossum <guido@python.org>
parents: 42188
diff changeset
37 out = io.StringIO()
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
38 sys.stdout = out
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
39
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
40 dh = sys.__displayhook__
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
41
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
42 self.assertRaises(TypeError, dh)
44098
0889daf6d0d9 #1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents: 44086
diff changeset
43 if hasattr(builtins, "_"):
0889daf6d0d9 #1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents: 44086
diff changeset
44 del builtins._
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
45
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
46 dh(None)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
47 self.assertEqual(out.getvalue(), "")
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
48 self.assertTrue(not hasattr(builtins, "_"))
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
49 dh(42)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
50 self.assertEqual(out.getvalue(), "42\n")
44098
0889daf6d0d9 #1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents: 44086
diff changeset
51 self.assertEqual(builtins._, 42)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
52
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
53 del sys.stdout
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
54 self.assertRaises(RuntimeError, dh, 42)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
55
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
56 def test_lost_displayhook(self):
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
57 del sys.displayhook
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
58 code = compile("42", "<string>", "single")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
59 self.assertRaises(RuntimeError, eval, code)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
60
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
61 def test_custom_displayhook(self):
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
62 def baddisplayhook(obj):
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
63 raise ValueError
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
64 sys.displayhook = baddisplayhook
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
65 code = compile("42", "<string>", "single")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
66 self.assertRaises(ValueError, eval, code)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
67
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
68 def test_original_excepthook(self):
42501
f6069f9dd52d SF patch# 1770008 by Christian Heimes (plus some extras).
Guido van Rossum <guido@python.org>
parents: 42188
diff changeset
69 err = io.StringIO()
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
70 sys.stderr = err
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
71
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
72 eh = sys.__excepthook__
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
73
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
74 self.assertRaises(TypeError, eh)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
75 try:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
76 raise ValueError(42)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40484
diff changeset
77 except ValueError as exc:
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
78 eh(*sys.exc_info())
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
79
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
80 self.assertTrue(err.getvalue().endswith("ValueError: 42\n"))
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
81
48840
dfe546b66eef add NEWS note and test for last commit
Benjamin Peterson <benjamin@python.org>
parents: 48683
diff changeset
82 def test_excepthook(self):
dfe546b66eef add NEWS note and test for last commit
Benjamin Peterson <benjamin@python.org>
parents: 48683
diff changeset
83 with test.support.captured_output("stderr") as stderr:
dfe546b66eef add NEWS note and test for last commit
Benjamin Peterson <benjamin@python.org>
parents: 48683
diff changeset
84 sys.excepthook(1, '1', 1)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
85 self.assertTrue("TypeError: print_exception(): Exception expected for " \
48840
dfe546b66eef add NEWS note and test for last commit
Benjamin Peterson <benjamin@python.org>
parents: 48683
diff changeset
86 "value, str found" in stderr.getvalue())
dfe546b66eef add NEWS note and test for last commit
Benjamin Peterson <benjamin@python.org>
parents: 48683
diff changeset
87
27661
35278aaae775 Fix typo.
Walter Dörwald <walter@livinglogic.de>
parents: 27660
diff changeset
88 # FIXME: testing the code for a lost or replaced excepthook in
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
89 # Python/pythonrun.c::PyErr_PrintEx() is tricky.
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
90
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
91 def test_exit(self):
61656
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
92
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
93 self.assertRaises(TypeError, sys.exit, 42, 42)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
94
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
95 # call without argument
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
96 try:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
97 sys.exit(0)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40484
diff changeset
98 except SystemExit as exc:
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64010
diff changeset
99 self.assertEqual(exc.code, 0)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
100 except:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
101 self.fail("wrong exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
102 else:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
103 self.fail("no exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
104
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
105 # call with tuple argument with one entry
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
106 # entry will be unpacked
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
107 try:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
108 sys.exit(42)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40484
diff changeset
109 except SystemExit as exc:
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64010
diff changeset
110 self.assertEqual(exc.code, 42)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
111 except:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
112 self.fail("wrong exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
113 else:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
114 self.fail("no exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
115
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
116 # call with integer argument
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
117 try:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
118 sys.exit((42,))
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40484
diff changeset
119 except SystemExit as exc:
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64010
diff changeset
120 self.assertEqual(exc.code, 42)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
121 except:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
122 self.fail("wrong exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
123 else:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
124 self.fail("no exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
125
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
126 # call with string argument
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
127 try:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
128 sys.exit("exit")
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40484
diff changeset
129 except SystemExit as exc:
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64010
diff changeset
130 self.assertEqual(exc.code, "exit")
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
131 except:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
132 self.fail("wrong exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
133 else:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
134 self.fail("no exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
135
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
136 # call with tuple argument with two entries
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
137 try:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
138 sys.exit((17, 23))
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40484
diff changeset
139 except SystemExit as exc:
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 64010
diff changeset
140 self.assertEqual(exc.code, (17, 23))
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
141 except:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
142 self.fail("wrong exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
143 else:
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
144 self.fail("no exception")
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
145
34589
a899d690f264 Test that SystemExits are handled properly by the exit machinery. I
Michael W. Hudson <mwh@python.net>
parents: 29765
diff changeset
146 # test that the exit machinery handles SystemExits properly
a899d690f264 Test that SystemExits are handled properly by the exit machinery. I
Michael W. Hudson <mwh@python.net>
parents: 29765
diff changeset
147 rc = subprocess.call([sys.executable, "-c",
a899d690f264 Test that SystemExits are handled properly by the exit machinery. I
Michael W. Hudson <mwh@python.net>
parents: 29765
diff changeset
148 "raise SystemExit(47)"])
a899d690f264 Test that SystemExits are handled properly by the exit machinery. I
Michael W. Hudson <mwh@python.net>
parents: 29765
diff changeset
149 self.assertEqual(rc, 47)
34591
1ae2c3b66e57 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 34589
diff changeset
150
61846
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
151 def check_exit_message(code, expected, env=None):
61656
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
152 process = subprocess.Popen([sys.executable, "-c", code],
61846
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
153 stderr=subprocess.PIPE, env=env)
61656
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
154 stdout, stderr = process.communicate()
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
155 self.assertEqual(process.returncode, 1)
61670
b9a0f26fa2c9 Merged revisions 81267 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61656
diff changeset
156 self.assertTrue(stderr.startswith(expected),
61680
82dbf93f760f Merged revisions 81276 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61670
diff changeset
157 "%s doesn't start with %s" % (ascii(stderr), ascii(expected)))
61656
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
158
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
159 # test that stderr buffer if flushed before the exit message is written
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
160 # into stderr
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
161 check_exit_message(
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
162 r'import sys; sys.stderr.write("unflushed,"); sys.exit("message")',
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
163 b"unflushed,message")
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
164
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
165 # test that the exit message is written with backslashreplace error
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
166 # handler to stderr
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
167 check_exit_message(
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
168 r'import sys; sys.exit("surrogates:\uDCFF")',
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
169 b"surrogates:\\udcff")
ca81646dd29c Merged revisions 81250-81253 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60017
diff changeset
170
61846
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
171 # test that the unicode message is encoded to the stderr encoding
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
172 # instead of the default encoding (utf8)
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
173 env = os.environ.copy()
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
174 env['PYTHONIOENCODING'] = 'latin-1'
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
175 check_exit_message(
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
176 r'import sys; sys.exit("h\xe9")',
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
177 b"h\xe9", env=env)
815ba3872f85 Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead
Victor Stinner <victor.stinner@haypocalc.com>
parents: 61678
diff changeset
178
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
179 def test_getdefaultencoding(self):
41819
db49a124739d Remove tests for have_unicode.
Walter Dörwald <walter@livinglogic.de>
parents: 41731
diff changeset
180 self.assertRaises(TypeError, sys.getdefaultencoding, 42)
db49a124739d Remove tests for have_unicode.
Walter Dörwald <walter@livinglogic.de>
parents: 41731
diff changeset
181 # can't check more than the type, as the user might have changed it
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
182 self.assertIsInstance(sys.getdefaultencoding(), str)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
183
63214
904b3a1616f3 Merged revisions 83140-83141 via svnmerge from
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents: 63210
diff changeset
184 # testing sys.settrace() is done in test_sys_settrace.py
904b3a1616f3 Merged revisions 83140-83141 via svnmerge from
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents: 63210
diff changeset
185 # testing sys.setprofile() is done in test_sys_setprofile.py
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
186
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
187 def test_setcheckinterval(self):
57218
32335ba3aa0b Silence getcheckinterval()-related warnings in the test suite
Antoine Pitrou <solipsis@pitrou.net>
parents: 57175
diff changeset
188 with warnings.catch_warnings():
32335ba3aa0b Silence getcheckinterval()-related warnings in the test suite
Antoine Pitrou <solipsis@pitrou.net>
parents: 57175
diff changeset
189 warnings.simplefilter("ignore")
32335ba3aa0b Silence getcheckinterval()-related warnings in the test suite
Antoine Pitrou <solipsis@pitrou.net>
parents: 57175
diff changeset
190 self.assertRaises(TypeError, sys.setcheckinterval)
32335ba3aa0b Silence getcheckinterval()-related warnings in the test suite
Antoine Pitrou <solipsis@pitrou.net>
parents: 57175
diff changeset
191 orig = sys.getcheckinterval()
32335ba3aa0b Silence getcheckinterval()-related warnings in the test suite
Antoine Pitrou <solipsis@pitrou.net>
parents: 57175
diff changeset
192 for n in 0, 100, 120, orig: # orig last to restore starting state
32335ba3aa0b Silence getcheckinterval()-related warnings in the test suite
Antoine Pitrou <solipsis@pitrou.net>
parents: 57175
diff changeset
193 sys.setcheckinterval(n)
66310
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 65944
diff changeset
194 self.assertEqual(sys.getcheckinterval(), n)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
195
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 60016
diff changeset
196 @unittest.skipUnless(threading, 'Threading required for this test.')
57175
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
197 def test_switchinterval(self):
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
198 self.assertRaises(TypeError, sys.setswitchinterval)
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
199 self.assertRaises(TypeError, sys.setswitchinterval, "a")
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
200 self.assertRaises(ValueError, sys.setswitchinterval, -1.0)
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
201 self.assertRaises(ValueError, sys.setswitchinterval, 0.0)
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
202 orig = sys.getswitchinterval()
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
203 # sanity check
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
204 self.assertTrue(orig < 0.5, orig)
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
205 try:
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
206 for n in 0.00001, 0.05, 3.0, orig:
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
207 sys.setswitchinterval(n)
66310
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 65944
diff changeset
208 self.assertAlmostEqual(sys.getswitchinterval(), n)
57175
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
209 finally:
fdd6484f1210 Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents: 56919
diff changeset
210 sys.setswitchinterval(orig)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
211
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
212 def test_recursionlimit(self):
27963
226463445697 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27934
diff changeset
213 self.assertRaises(TypeError, sys.getrecursionlimit, 42)
226463445697 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27934
diff changeset
214 oldlimit = sys.getrecursionlimit()
226463445697 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27934
diff changeset
215 self.assertRaises(TypeError, sys.setrecursionlimit)
226463445697 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27934
diff changeset
216 self.assertRaises(ValueError, sys.setrecursionlimit, -42)
226463445697 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27934
diff changeset
217 sys.setrecursionlimit(10000)
226463445697 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27934
diff changeset
218 self.assertEqual(sys.getrecursionlimit(), 10000)
226463445697 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27934
diff changeset
219 sys.setrecursionlimit(oldlimit)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
220
67763
3cabce0b6caf Tighten the restrictions on the test_sys test which triggers a fatal error when
Brett Cannon <bcannon@gmail.com>
parents: 67730
diff changeset
221 @unittest.skipIf(hasattr(sys, 'gettrace') and sys.gettrace(),
3cabce0b6caf Tighten the restrictions on the test_sys test which triggers a fatal error when
Brett Cannon <bcannon@gmail.com>
parents: 67730
diff changeset
222 'fatal error if run with a trace function')
52145
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
223 def test_recursionlimit_recovery(self):
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
224 # NOTE: this test is slightly fragile in that it depends on the current
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
225 # recursion count when executing the test being low enough so as to
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
226 # trigger the recursion recovery detection in the _Py_MakeEndRecCheck
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
227 # macro (see ceval.h).
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
228 oldlimit = sys.getrecursionlimit()
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
229 def f():
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
230 f()
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
231 try:
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
232 for i in (50, 1000):
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
233 # Issue #5392: stack overflow after hitting recursion limit twice
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
234 sys.setrecursionlimit(i)
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
235 self.assertRaises(RuntimeError, f)
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
236 self.assertRaises(RuntimeError, f)
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
237 finally:
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
238 sys.setrecursionlimit(oldlimit)
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
239
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
240 def test_recursionlimit_fatalerror(self):
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
241 # A fatal error occurs if a second recursion limit is hit when recovering
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
242 # from a first one.
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
243 code = textwrap.dedent("""
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
244 import sys
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
245
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
246 def f():
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
247 try:
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
248 f()
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
249 except RuntimeError:
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
250 f()
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
251
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
252 sys.setrecursionlimit(%d)
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
253 f()""")
86164
1cbd3d9f7d61 Issue #18948: improve SuppressCoreFiles to include Windows crash popup suppression, and use it in more tests.
Antoine Pitrou <solipsis@pitrou.net>
parents: 85969
diff changeset
254 with test.support.SuppressCrashReport():
82838
54ee934400b3 #17493: re-enable a test on Windows. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 78420
diff changeset
255 for i in (50, 1000):
54ee934400b3 #17493: re-enable a test on Windows. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 78420
diff changeset
256 sub = subprocess.Popen([sys.executable, '-c', code % i],
54ee934400b3 #17493: re-enable a test on Windows. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 78420
diff changeset
257 stderr=subprocess.PIPE)
54ee934400b3 #17493: re-enable a test on Windows. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 78420
diff changeset
258 err = sub.communicate()[1]
54ee934400b3 #17493: re-enable a test on Windows. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 78420
diff changeset
259 self.assertTrue(sub.returncode, sub.returncode)
54ee934400b3 #17493: re-enable a test on Windows. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 78420
diff changeset
260 self.assertIn(
54ee934400b3 #17493: re-enable a test on Windows. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 78420
diff changeset
261 b"Fatal Python error: Cannot recover from stack overflow",
54ee934400b3 #17493: re-enable a test on Windows. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 78420
diff changeset
262 err)
52145
b363e29756ff Issue #5392: when a very low recursion limit was set, the interpreter would
Antoine Pitrou <solipsis@pitrou.net>
parents: 51378
diff changeset
263
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
264 def test_getwindowsversion(self):
58519
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
265 # Raise SkipTest if sys doesn't have getwindowsversion attribute
58521
75d24b2452a5 Fixed test_support -> support.
Eric Smith <eric@trueblade.com>
parents: 58519
diff changeset
266 test.support.get_attribute(sys, "getwindowsversion")
58519
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
267 v = sys.getwindowsversion()
62875
7a216bc2bed6 Undo inadvertant checkin.
Brian Curtin <brian.curtin@gmail.com>
parents: 62874
diff changeset
268 self.assertEqual(len(v), 5)
58519
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
269 self.assertIsInstance(v[0], int)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
270 self.assertIsInstance(v[1], int)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
271 self.assertIsInstance(v[2], int)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
272 self.assertIsInstance(v[3], int)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
273 self.assertIsInstance(v[4], str)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
274 self.assertRaises(IndexError, operator.getitem, v, 5)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
275 self.assertIsInstance(v.major, int)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
276 self.assertIsInstance(v.minor, int)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
277 self.assertIsInstance(v.build, int)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
278 self.assertIsInstance(v.platform, int)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
279 self.assertIsInstance(v.service_pack, str)
58528
96d5c7031440 Merged revisions 77784 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58521
diff changeset
280 self.assertIsInstance(v.service_pack_minor, int)
96d5c7031440 Merged revisions 77784 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58521
diff changeset
281 self.assertIsInstance(v.service_pack_major, int)
96d5c7031440 Merged revisions 77784 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58521
diff changeset
282 self.assertIsInstance(v.suite_mask, int)
96d5c7031440 Merged revisions 77784 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58521
diff changeset
283 self.assertIsInstance(v.product_type, int)
58519
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
284 self.assertEqual(v[0], v.major)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
285 self.assertEqual(v[1], v.minor)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
286 self.assertEqual(v[2], v.build)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
287 self.assertEqual(v[3], v.platform)
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
288 self.assertEqual(v[4], v.service_pack)
58507
7379cf70fd60 Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58473
diff changeset
289
58519
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
290 # This is how platform.py calls it. Make sure tuple
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
291 # still has 5 elements
34e2d5162ce9 Merged revisions 77775 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 58515
diff changeset
292 maj, min, buildno, plat, csd = sys.getwindowsversion()
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
293
49537
2c3a6c9dff62 Benjamin Peterson's patch to fix bug 3661, sys.call_tracing segfaults.
Barry Warsaw <barry@python.org>
parents: 49403
diff changeset
294 def test_call_tracing(self):
2c3a6c9dff62 Benjamin Peterson's patch to fix bug 3661, sys.call_tracing segfaults.
Barry Warsaw <barry@python.org>
parents: 49403
diff changeset
295 self.assertRaises(TypeError, sys.call_tracing, type, 2)
2c3a6c9dff62 Benjamin Peterson's patch to fix bug 3661, sys.call_tracing segfaults.
Barry Warsaw <barry@python.org>
parents: 49403
diff changeset
296
86895
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
297 @unittest.skipUnless(hasattr(sys, "setdlopenflags"),
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
298 'test needs sys.setdlopenflags()')
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
299 def test_dlopenflags(self):
86895
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
300 self.assertTrue(hasattr(sys, "getdlopenflags"))
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
301 self.assertRaises(TypeError, sys.getdlopenflags, 42)
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
302 oldflags = sys.getdlopenflags()
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
303 self.assertRaises(TypeError, sys.setdlopenflags)
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
304 sys.setdlopenflags(oldflags+1)
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
305 self.assertEqual(sys.getdlopenflags(), oldflags+1)
1feeeb8992f8 Issue #18702: All skipped tests now reported as skipped.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85418
diff changeset
306 sys.setdlopenflags(oldflags)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
307
68094
7f85fbc16cae Issue #10992: make tests pass when run under coverage.
Brett Cannon <bcannon@gmail.com>
parents: 67763
diff changeset
308 @test.support.refcount_test
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
309 def test_refcount(self):
52892
792bb885029f Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52836
diff changeset
310 # n here must be a global in order for this test to pass while
792bb885029f Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52836
diff changeset
311 # tracing with a python function. Tracing calls PyFrame_FastToLocals
792bb885029f Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52836
diff changeset
312 # which will add a copy of any locals to the frame object, causing
792bb885029f Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52836
diff changeset
313 # the reference count to increase by 2 instead of 1.
792bb885029f Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52836
diff changeset
314 global n
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
315 self.assertRaises(TypeError, sys.getrefcount)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
316 c = sys.getrefcount(None)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
317 n = None
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
318 self.assertEqual(sys.getrefcount(None), c+1)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
319 del n
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
320 self.assertEqual(sys.getrefcount(None), c)
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
321 if hasattr(sys, "gettotalrefcount"):
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
322 self.assertIsInstance(sys.gettotalrefcount(), int)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
323
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
324 def test_getframe(self):
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
325 self.assertRaises(TypeError, sys._getframe, 42, 42)
27934
f67ab6b66454 Fix SF bug #688424, 64-bit test problems
Neal Norwitz <nnorwitz@gmail.com>
parents: 27661
diff changeset
326 self.assertRaises(ValueError, sys._getframe, 2000000000)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
327 self.assertTrue(
44021
ff5df1fc0fcc Patch from Georg Brandl and me for #1493
Christian Heimes <christian@cheimes.de>
parents: 43788
diff changeset
328 SysModuleTest.test_getframe.__code__ \
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
329 is sys._getframe().f_code
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
330 )
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
331
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
332 # sys._current_frames() is a CPython-only gimmick.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
333 def test_current_frames(self):
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
334 have_threads = True
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
335 try:
47266
7fe3a8648ce2 Rename thread to _thread and dummy_thread to _dummy_thread. Issue #2875.
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
336 import _thread
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
337 except ImportError:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
338 have_threads = False
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
339
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
340 if have_threads:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
341 self.current_frames_with_threads()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
342 else:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
343 self.current_frames_without_threads()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
344
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
345 # Test sys._current_frames() in a WITH_THREADS build.
56874
955d8fa12ad5 Merged revisions 75842 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 56716
diff changeset
346 @test.support.reap_threads
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
347 def current_frames_with_threads(self):
70530
5548197d1f22 Close #12028: Make threading._get_ident() public, rename it to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69724
diff changeset
348 import threading
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
349 import traceback
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
350
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
351 # Spawn a thread that blocks at a known place. Then the main
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
352 # thread does sys._current_frames(), and verifies that the frames
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
353 # returned make sense.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
354 entered_g = threading.Event()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
355 leave_g = threading.Event()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
356 thread_info = [] # the thread's id
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
357
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
358 def f123():
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
359 g456()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
360
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
361 def g456():
70530
5548197d1f22 Close #12028: Make threading._get_ident() public, rename it to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69724
diff changeset
362 thread_info.append(threading.get_ident())
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
363 entered_g.set()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
364 leave_g.wait()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
365
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
366 t = threading.Thread(target=f123)
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
367 t.start()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
368 entered_g.wait()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
369
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
370 # At this point, t has finished its entered_g.set(), although it's
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
371 # impossible to guess whether it's still on that line or has moved on
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
372 # to its leave_g.wait().
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
373 self.assertEqual(len(thread_info), 1)
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
374 thread_id = thread_info[0]
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
375
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
376 d = sys._current_frames()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
377
70530
5548197d1f22 Close #12028: Make threading._get_ident() public, rename it to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69724
diff changeset
378 main_id = threading.get_ident()
58415
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57218
diff changeset
379 self.assertIn(main_id, d)
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57218
diff changeset
380 self.assertIn(thread_id, d)
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
381
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
382 # Verify that the captured main-thread frame is _this_ frame.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
383 frame = d.pop(main_id)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
384 self.assertTrue(frame is sys._getframe())
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
385
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
386 # Verify that the captured thread frame is blocked in g456, called
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
387 # from f123. This is a litte tricky, since various bits of
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
388 # threading.py are also in the thread's call stack.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
389 frame = d.pop(thread_id)
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
390 stack = traceback.extract_stack(frame)
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
391 for i, (filename, lineno, funcname, sourceline) in enumerate(stack):
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
392 if funcname == "f123":
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
393 break
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
394 else:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
395 self.fail("didn't find f123() on thread's call stack")
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
396
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
397 self.assertEqual(sourceline, "g456()")
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
398
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
399 # And the next record must be for g456().
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
400 filename, lineno, funcname, sourceline = stack[i+1]
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
401 self.assertEqual(funcname, "g456")
58415
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57218
diff changeset
402 self.assertIn(sourceline, ["leave_g.wait()", "entered_g.set()"])
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
403
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
404 # Reap the spawned thread.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
405 leave_g.set()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
406 t.join()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
407
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
408 # Test sys._current_frames() when thread support doesn't exist.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
409 def current_frames_without_threads(self):
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
410 # Not much happens here: there is only one thread, with artificial
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
411 # "thread id" 0.
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
412 d = sys._current_frames()
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
413 self.assertEqual(len(d), 1)
58415
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57218
diff changeset
414 self.assertIn(0, d)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
415 self.assertTrue(d[0] is sys._getframe())
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 37424
diff changeset
416
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
417 def test_attributes(self):
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
418 self.assertIsInstance(sys.api_version, int)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
419 self.assertIsInstance(sys.argv, list)
58415
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57218
diff changeset
420 self.assertIn(sys.byteorder, ("little", "big"))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
421 self.assertIsInstance(sys.builtin_module_names, tuple)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
422 self.assertIsInstance(sys.copyright, str)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
423 self.assertIsInstance(sys.exec_prefix, str)
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 76942
diff changeset
424 self.assertIsInstance(sys.base_exec_prefix, str)
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
425 self.assertIsInstance(sys.executable, str)
44086
110ff614ec28 Merged revisions 59245-59254 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44021
diff changeset
426 self.assertEqual(len(sys.float_info), 11)
44674
1154158a199f Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
427 self.assertEqual(sys.float_info.radix, 2)
52215
bb5de24a343f Issue #4258: Make it possible to use 30-bit digits for PyLongs:
Mark Dickinson <dickinsm@gmail.com>
parents: 52145
diff changeset
428 self.assertEqual(len(sys.int_info), 2)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
429 self.assertTrue(sys.int_info.bits_per_digit % 5 == 0)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
430 self.assertTrue(sys.int_info.sizeof_digit >= 1)
53072
7e978ca42930 Merged revisions 70980,71059,71225,71234,71241,71243,71249,71251,71255,71266,71299,71329,71397-71398,71486 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52892
diff changeset
431 self.assertEqual(type(sys.int_info.bits_per_digit), int)
7e978ca42930 Merged revisions 70980,71059,71225,71234,71241,71243,71249,71251,71255,71266,71299,71329,71397-71398,71486 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 52892
diff changeset
432 self.assertEqual(type(sys.int_info.sizeof_digit), int)
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
433 self.assertIsInstance(sys.hexversion, int)
61873
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
434
87288
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
435 self.assertEqual(len(sys.hash_info), 9)
61873
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
436 self.assertLess(sys.hash_info.modulus, 2**sys.hash_info.width)
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
437 # sys.hash_info.modulus should be a prime; we do a quick
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
438 # probable primality test (doesn't exclude the possibility of
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
439 # a Carmichael number)
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
440 for x in range(1, 100):
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
441 self.assertEqual(
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
442 pow(x, sys.hash_info.modulus-1, sys.hash_info.modulus),
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
443 1,
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
444 "sys.hash_info.modulus {} is a non-prime".format(
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
445 sys.hash_info.modulus)
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
446 )
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
447 self.assertIsInstance(sys.hash_info.inf, int)
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
448 self.assertIsInstance(sys.hash_info.nan, int)
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
449 self.assertIsInstance(sys.hash_info.imag, int)
87288
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
450 algo = sysconfig.get_config_var("PY_HASH_ALGORITHM")
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
451 if sys.hash_info.algorithm in {"fnv", "siphash24"}:
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
452 self.assertIn(sys.hash_info.hash_bits, {32, 64})
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
453 self.assertIn(sys.hash_info.seed_bits, {32, 64, 128})
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
454
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
455 if algo == 1:
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
456 self.assertEqual(sys.hash_info.algorithm, "siphash24")
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
457 elif algo == 2:
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
458 self.assertEqual(sys.hash_info.algorithm, "fnv")
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
459 else:
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
460 processor = platform.processor().lower()
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
461 if processor in {"sparc", "mips"}:
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
462 self.assertEqual(sys.hash_info.algorithm, "fnv")
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
463 else:
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
464 self.assertEqual(sys.hash_info.algorithm, "siphash24")
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
465 else:
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
466 # PY_HASH_EXTERNAL
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
467 self.assertEqual(algo, 0)
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
468 self.assertGreaterEqual(sys.hash_info.cutoff, 0)
adb471b9cba1 ssue #19183: Implement PEP 456 'secure and interchangeable hash algorithm'.
Christian Heimes <christian@cheimes.de>
parents: 86899
diff changeset
469 self.assertLess(sys.hash_info.cutoff, 8)
61873
0bc8ffe6ba9a Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents: 61846
diff changeset
470
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
471 self.assertIsInstance(sys.maxsize, int)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
472 self.assertIsInstance(sys.maxunicode, int)
72503
606652491366 #13054: sys.maxunicode is now always 0x10FFFF.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 72479
diff changeset
473 self.assertEqual(sys.maxunicode, 0x10FFFF)
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
474 self.assertIsInstance(sys.platform, str)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
475 self.assertIsInstance(sys.prefix, str)
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 76942
diff changeset
476 self.assertIsInstance(sys.base_prefix, str)
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
477 self.assertIsInstance(sys.version, str)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
478 vi = sys.version_info
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
479 self.assertIsInstance(vi[:], tuple)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
480 self.assertEqual(len(vi), 5)
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
481 self.assertIsInstance(vi[0], int)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
482 self.assertIsInstance(vi[1], int)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
483 self.assertIsInstance(vi[2], int)
58415
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57218
diff changeset
484 self.assertIn(vi[3], ("alpha", "beta", "candidate", "final"))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
485 self.assertIsInstance(vi[4], int)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
486 self.assertIsInstance(vi.major, int)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
487 self.assertIsInstance(vi.minor, int)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
488 self.assertIsInstance(vi.micro, int)
58456
f0f221e1a7c0 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58415
diff changeset
489 self.assertIn(vi.releaselevel, ("alpha", "beta", "candidate", "final"))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 58456
diff changeset
490 self.assertIsInstance(vi.serial, int)
51378
4cc49d978ec2 Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 50490
diff changeset
491 self.assertEqual(vi[0], vi.major)
4cc49d978ec2 Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 50490
diff changeset
492 self.assertEqual(vi[1], vi.minor)
4cc49d978ec2 Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 50490
diff changeset
493 self.assertEqual(vi[2], vi.micro)
4cc49d978ec2 Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 50490
diff changeset
494 self.assertEqual(vi[3], vi.releaselevel)
4cc49d978ec2 Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents: 50490
diff changeset
495 self.assertEqual(vi[4], vi.serial)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
496 self.assertTrue(vi > (1,0,0))
56716
92f0a1ca4e98 Add tests for sys.float_repr_style
Mark Dickinson <dickinsm@gmail.com>
parents: 55109
diff changeset
497 self.assertIsInstance(sys.float_repr_style, str)
58415
f6a626f34840 use assert[Not]In where appropriate
Benjamin Peterson <benjamin@python.org>
parents: 57218
diff changeset
498 self.assertIn(sys.float_repr_style, ('short', 'legacy'))
65389
932f97bfbdc0 First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents: 65368
diff changeset
499 if not sys.platform.startswith('win'):
932f97bfbdc0 First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents: 65368
diff changeset
500 self.assertIsInstance(sys.abiflags, str)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
501
69710
2b21fcf3d9a9 Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68950
diff changeset
502 @unittest.skipUnless(hasattr(sys, 'thread_info'),
2b21fcf3d9a9 Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68950
diff changeset
503 'Threading required for this test.')
2b21fcf3d9a9 Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68950
diff changeset
504 def test_thread_info(self):
2b21fcf3d9a9 Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68950
diff changeset
505 info = sys.thread_info
69724
f3b4a4e06908 Fix test.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 69710
diff changeset
506 self.assertEqual(len(info), 3)
79482
9ba1f113c3ec Closes #16135: Removal of OS/2 support
Jesus Cea <jcea@jcea.es>
parents: 79242
diff changeset
507 self.assertIn(info.name, ('nt', 'pthread', 'solaris', None))
69710
2b21fcf3d9a9 Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68950
diff changeset
508 self.assertIn(info.lock, ('semaphore', 'mutex+cond', None))
2b21fcf3d9a9 Issue #11223: Replace threading._info() by sys.thread_info
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68950
diff changeset
509
37424
3eea65bb896e Add test case for #43581.
Martin v. Löwis <martin@v.loewis.de>
parents: 35309
diff changeset
510 def test_43581(self):
47553
09eb8d62626a Remove last traces of cStringIO.
Georg Brandl <georg@python.org>
parents: 47495
diff changeset
511 # Can't use sys.stdout, as this is a StringIO object when
37424
3eea65bb896e Add test case for #43581.
Martin v. Löwis <martin@v.loewis.de>
parents: 35309
diff changeset
512 # the test runs under regrtest.
42188
81930eaae715 Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents: 42013
diff changeset
513 self.assertEqual(sys.__stdout__.encoding, sys.__stderr__.encoding)
37424
3eea65bb896e Add test case for #43581.
Martin v. Löwis <martin@v.loewis.de>
parents: 35309
diff changeset
514
40484
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
515 def test_intern(self):
56921
ad61129c4422 Merged revisions 75889 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
516 global numruns
ad61129c4422 Merged revisions 75889 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
517 numruns += 1
40484
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
518 self.assertRaises(TypeError, sys.intern)
56921
ad61129c4422 Merged revisions 75889 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
519 s = "never interned before" + str(numruns)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
520 self.assertTrue(sys.intern(s) is s)
40484
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
521 s2 = s.swapcase().swapcase()
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
522 self.assertTrue(sys.intern(s2) is s)
40484
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
523
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
524 # Subclasses of string can't be interned, because they
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
525 # provide too much opportunity for insane things to happen.
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
526 # We don't want them in the interned dict and if they aren't
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
527 # actually interned, we don't want to create the appearance
68585
bf94b6a73fc8 #11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66340
diff changeset
528 # that they are by allowing intern() to succeed.
43777
0d462d789b18 Merging the py3k-pep3137 branch back into the py3k branch.
Guido van Rossum <guido@python.org>
parents: 43664
diff changeset
529 class S(str):
40484
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
530 def __hash__(self):
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
531 return 123
8565e3fea9b6 Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents: 39442
diff changeset
532
43777
0d462d789b18 Merging the py3k-pep3137 branch back into the py3k branch.
Guido van Rossum <guido@python.org>
parents: 43664
diff changeset
533 self.assertRaises(TypeError, sys.intern, S("abc"))
42013
cd125fe83051 Make identifiers str (not str8) objects throughout.
Martin v. Löwis <martin@v.loewis.de>
parents: 41969
diff changeset
534
44674
1154158a199f Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
535 def test_sys_flags(self):
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
536 self.assertTrue(sys.flags)
68950
c19752ea037f Remove traces of division_warning left over from Python 2 (#10998)
Éric Araujo <merwok@netwok.org>
parents: 68587
diff changeset
537 attrs = ("debug",
44674
1154158a199f Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
538 "inspect", "interactive", "optimize", "dont_write_bytecode",
47489
7a1d4e8233f8 Fix sys.flags sequence behavior and add a test case.
Georg Brandl <georg@python.org>
parents: 47466
diff changeset
539 "no_user_site", "no_site", "ignore_environment", "verbose",
85081
dd0d751cc7f1 Issue #16400: Add command line option for isolated mode.
Christian Heimes <christian@cheimes.de>
parents: 85046
diff changeset
540 "bytes_warning", "quiet", "hash_randomization", "isolated")
44674
1154158a199f Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
541 for attr in attrs:
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
542 self.assertTrue(hasattr(sys.flags, attr), attr)
44674
1154158a199f Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
543 self.assertEqual(type(getattr(sys.flags, attr)), int, attr)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53816
diff changeset
544 self.assertTrue(repr(sys.flags))
47489
7a1d4e8233f8 Fix sys.flags sequence behavior and add a test case.
Georg Brandl <georg@python.org>
parents: 47466
diff changeset
545 self.assertEqual(len(sys.flags), len(attrs))
44674
1154158a199f Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44160
diff changeset
546
45145
3d7b84daa34a Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44699
diff changeset
547 def test_clear_type_cache(self):
3d7b84daa34a Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44699
diff changeset
548 sys._clear_type_cache()
3d7b84daa34a Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44699
diff changeset
549
47444
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
550 def test_ioencoding(self):
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
551 env = dict(os.environ)
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
552
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
553 # Test character: cent sign, encoded as 0x4A (ASCII J) in CP424,
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
554 # not representable in ASCII.
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
555
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
556 env["PYTHONIOENCODING"] = "cp424"
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
557 p = subprocess.Popen([sys.executable, "-c", 'print(chr(0xa2))'],
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
558 stdout = subprocess.PIPE, env=env)
56874
955d8fa12ad5 Merged revisions 75842 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 56716
diff changeset
559 out = p.communicate()[0].strip()
78420
4efad7fba42a Fix test_sys under Windows (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents: 78315
diff changeset
560 expected = ("\xa2" + os.linesep).encode("cp424")
4efad7fba42a Fix test_sys under Windows (issue #13119)
Antoine Pitrou <solipsis@pitrou.net>
parents: 78315
diff changeset
561 self.assertEqual(out, expected)
47444
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
562
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
563 env["PYTHONIOENCODING"] = "ascii:replace"
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
564 p = subprocess.Popen([sys.executable, "-c", 'print(chr(0xa2))'],
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
565 stdout = subprocess.PIPE, env=env)
56874
955d8fa12ad5 Merged revisions 75842 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 56716
diff changeset
566 out = p.communicate()[0].strip()
47444
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
567 self.assertEqual(out, b'?')
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
568
85673
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
569 env["PYTHONIOENCODING"] = "ascii"
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
570 p = subprocess.Popen([sys.executable, "-c", 'print(chr(0xa2))'],
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
571 stdout=subprocess.PIPE, stderr=subprocess.PIPE,
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
572 env=env)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
573 out, err = p.communicate()
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
574 self.assertEqual(out, b'')
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
575 self.assertIn(b'UnicodeEncodeError:', err)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
576 self.assertIn(rb"'\xa2'", err)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
577
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
578 env["PYTHONIOENCODING"] = "ascii:"
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
579 p = subprocess.Popen([sys.executable, "-c", 'print(chr(0xa2))'],
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
580 stdout=subprocess.PIPE, stderr=subprocess.PIPE,
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
581 env=env)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
582 out, err = p.communicate()
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
583 self.assertEqual(out, b'')
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
584 self.assertIn(b'UnicodeEncodeError:', err)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
585 self.assertIn(rb"'\xa2'", err)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
586
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
587 env["PYTHONIOENCODING"] = ":surrogateescape"
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
588 p = subprocess.Popen([sys.executable, "-c", 'print(chr(0xdcbd))'],
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
589 stdout=subprocess.PIPE, env=env)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
590 out = p.communicate()[0].strip()
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
591 self.assertEqual(out, b'\xbd')
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
592
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
593 @unittest.skipUnless(test.support.FS_NONASCII,
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
594 'requires OS support of non-ASCII encodings')
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
595 def test_ioencoding_nonascii(self):
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
596 env = dict(os.environ)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
597
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
598 env["PYTHONIOENCODING"] = ""
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
599 p = subprocess.Popen([sys.executable, "-c",
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
600 'print(%a)' % test.support.FS_NONASCII],
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
601 stdout=subprocess.PIPE, env=env)
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
602 out = p.communicate()[0].strip()
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
603 self.assertEqual(out, os.fsencode(test.support.FS_NONASCII))
c7fdb0637d0b Issue #18818: The "encodingname" part of PYTHONIOENCODING is now optional.
Serhiy Storchaka <storchaka@gmail.com>
parents: 85419
diff changeset
604
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 76942
diff changeset
605 @unittest.skipIf(sys.base_prefix != sys.prefix,
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 76942
diff changeset
606 'Test is not venv-compatible')
59856
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
607 def test_executable(self):
74725
fdcda5b74317 Document absoluteness of sys.executable
Petri Lehtinen <petri@digip.org>
parents: 68586
diff changeset
608 # sys.executable should be absolute
fdcda5b74317 Document absoluteness of sys.executable
Petri Lehtinen <petri@digip.org>
parents: 68586
diff changeset
609 self.assertEqual(os.path.abspath(sys.executable), sys.executable)
fdcda5b74317 Document absoluteness of sys.executable
Petri Lehtinen <petri@digip.org>
parents: 68586
diff changeset
610
59856
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
611 # Issue #7774: Ensure that sys.executable is an empty string if argv[0]
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
612 # has been set to an non existent program name and Python is unable to
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
613 # retrieve the real program name
64010
656fe6292f9f Merged revisions 83212,83829,83833,83838-83839,83878,84019,84025,84028,84032,84036 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 63214
diff changeset
614
59856
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
615 # For a normal installation, it should work without 'cwd'
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
616 # argument. For test runs in the build directory, see #7774.
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
617 python_dir = os.path.dirname(os.path.realpath(sys.executable))
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
618 p = subprocess.Popen(
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
619 ["nonexistent", "-c",
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
620 'import sys; print(sys.executable.encode("ascii", "backslashreplace"))'],
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
621 executable=sys.executable, stdout=subprocess.PIPE, cwd=python_dir)
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
622 stdout = p.communicate()[0]
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
623 executable = stdout.strip().decode("ASCII")
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
624 p.wait()
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
625 self.assertIn(executable, ["b''", repr(sys.executable.encode("ascii", "backslashreplace"))])
7e3b490877ce Merged revisions 78868-78869 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 56921
diff changeset
626
64170
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
627 def check_fsencoding(self, fs_encoding, expected=None):
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
628 self.assertIsNotNone(fs_encoding)
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
629 codecs.lookup(fs_encoding)
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
630 if expected:
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
631 self.assertEqual(fs_encoding, expected)
64160
65fe059b97bf test_sys: move tests at the right place
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64154
diff changeset
632
64170
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
633 def test_getfilesystemencoding(self):
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
634 fs_encoding = sys.getfilesystemencoding()
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
635 if sys.platform == 'darwin':
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
636 expected = 'utf-8'
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
637 elif sys.platform == 'win32':
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
638 expected = 'mbcs'
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
639 else:
082eafa08802 Fix test_sys about fs encoding for Windows and Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64160
diff changeset
640 expected = None
64171
f65bbfbb823f Ooops, finish test_sys fix: use expected variable
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64170
diff changeset
641 self.check_fsencoding(fs_encoding, expected)
64160
65fe059b97bf test_sys: move tests at the right place
Victor Stinner <victor.stinner@haypocalc.com>
parents: 64154
diff changeset
642
77339
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
643 def test_implementation(self):
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
644 # This test applies to all implementations equally.
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
645
79242
bd8afb90ebf2 Fix test_sys.test_implementation for final releases.
Georg Brandl <georg@python.org>
parents: 78422
diff changeset
646 levels = {'alpha': 0xA, 'beta': 0xB, 'candidate': 0xC, 'final': 0xF}
77339
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
647
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
648 self.assertTrue(hasattr(sys.implementation, 'name'))
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
649 self.assertTrue(hasattr(sys.implementation, 'version'))
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
650 self.assertTrue(hasattr(sys.implementation, 'hexversion'))
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
651 self.assertTrue(hasattr(sys.implementation, 'cache_tag'))
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
652
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
653 version = sys.implementation.version
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
654 self.assertEqual(version[:2], (version.major, version.minor))
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
655
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
656 hexversion = (version.major << 24 | version.minor << 16 |
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
657 version.micro << 8 | levels[version.releaselevel] << 4 |
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
658 version.serial << 0)
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
659 self.assertEqual(sys.implementation.hexversion, hexversion)
9c445f4695c1 Eric Snow's implementation of PEP 421.
Barry Warsaw <barry@python.org>
parents: 77213
diff changeset
660
77343
a061ae246395 PEP 421 requires that .name be lower case.
Barry Warsaw <barry@python.org>
parents: 77339
diff changeset
661 # PEP 421 requires that .name be lower case.
77344
59ae1e96db1c Whitespace normalization
Barry Warsaw <barry@python.org>
parents: 77343
diff changeset
662 self.assertEqual(sys.implementation.name,
77343
a061ae246395 PEP 421 requires that .name be lower case.
Barry Warsaw <barry@python.org>
parents: 77339
diff changeset
663 sys.implementation.name.lower())
a061ae246395 PEP 421 requires that .name be lower case.
Barry Warsaw <barry@python.org>
parents: 77339
diff changeset
664
77577
d63a80abfbec Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents: 77344
diff changeset
665 def test_debugmallocstats(self):
d63a80abfbec Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents: 77344
diff changeset
666 # Test sys._debugmallocstats()
d63a80abfbec Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents: 77344
diff changeset
667 from test.script_helper import assert_python_ok
d63a80abfbec Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents: 77344
diff changeset
668 args = ['-c', 'import sys; sys._debugmallocstats()']
d63a80abfbec Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents: 77344
diff changeset
669 ret, out, err = assert_python_ok(*args)
d63a80abfbec Issue #14785: Add sys._debugmallocstats() to help debug low-level memory allocation issues
David Malcolm <dmalcolm@redhat.com>
parents: 77344
diff changeset
670 self.assertIn(b"free PyDictObjects", err)
47444
bb2c4bdc3c68 Forward-port PYTHONIOENCODING.
Martin v. Löwis <martin@v.loewis.de>
parents: 47266
diff changeset
671
80777
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
672 @unittest.skipUnless(hasattr(sys, "getallocatedblocks"),
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
673 "sys.getallocatedblocks unavailable on this build")
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
674 def test_getallocatedblocks(self):
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
675 # Some sanity checks
80923
a85673b55177 Following issue #13390, fix compilation --without-pymalloc, and make sys.getallocatedblocks() return 0 in that situation.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80777
diff changeset
676 with_pymalloc = sysconfig.get_config_var('WITH_PYMALLOC')
80777
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
677 a = sys.getallocatedblocks()
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
678 self.assertIs(type(a), int)
80923
a85673b55177 Following issue #13390, fix compilation --without-pymalloc, and make sys.getallocatedblocks() return 0 in that situation.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80777
diff changeset
679 if with_pymalloc:
a85673b55177 Following issue #13390, fix compilation --without-pymalloc, and make sys.getallocatedblocks() return 0 in that situation.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80777
diff changeset
680 self.assertGreater(a, 0)
a85673b55177 Following issue #13390, fix compilation --without-pymalloc, and make sys.getallocatedblocks() return 0 in that situation.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80777
diff changeset
681 else:
80927
b6ced7bd7d96 Relax test when WITH_PYMALLOC is false or undefined.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80923
diff changeset
682 # When WITH_PYMALLOC isn't available, we don't know anything
b6ced7bd7d96 Relax test when WITH_PYMALLOC is false or undefined.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80923
diff changeset
683 # about the underlying implementation: the function might
b6ced7bd7d96 Relax test when WITH_PYMALLOC is false or undefined.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80923
diff changeset
684 # return 0 or something greater.
b6ced7bd7d96 Relax test when WITH_PYMALLOC is false or undefined.
Antoine Pitrou <solipsis@pitrou.net>
parents: 80923
diff changeset
685 self.assertGreaterEqual(a, 0)
80777
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
686 try:
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
687 # While we could imagine a Python session where the number of
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
688 # multiple buffer objects would exceed the sharing of references,
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
689 # it is unlikely to happen in a normal test run.
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
690 self.assertLess(a, sys.gettotalrefcount())
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
691 except AttributeError:
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
692 # gettotalrefcount() not available
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
693 pass
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
694 gc.collect()
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
695 b = sys.getallocatedblocks()
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
696 self.assertLessEqual(b, a)
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
697 gc.collect()
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
698 c = sys.getallocatedblocks()
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
699 self.assertIn(c, range(b - 50, b + 50))
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
700
c40f4c19d20b Issue #13390: New function :func:`sys.getallocatedblocks()` returns the number of memory blocks currently allocated.
Antoine Pitrou <solipsis@pitrou.net>
parents: 79627
diff changeset
701
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
702 class SizeofTest(unittest.TestCase):
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
703
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
704 def setUp(self):
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
705 self.P = struct.calcsize('P')
52215
bb5de24a343f Issue #4258: Make it possible to use 30-bit digits for PyLongs:
Mark Dickinson <dickinsm@gmail.com>
parents: 52145
diff changeset
706 self.longdigit = sys.int_info.sizeof_digit
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
707 import _testcapi
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
708 self.gc_headsize = _testcapi.SIZEOF_PYGC_HEAD
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
709 self.file = open(test.support.TESTFN, 'wb')
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
710
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
711 def tearDown(self):
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
712 self.file.close()
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
713 test.support.unlink(test.support.TESTFN)
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
714
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
715 check_sizeof = test.support.check_sizeof
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
716
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
717 def test_gc_head_size(self):
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
718 # Check that the gc header size is added to objects tracked by the gc.
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
719 vsize = test.support.calcvobjsize
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
720 gc_header_size = self.gc_headsize
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
721 # bool objects are not gc tracked
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
722 self.assertEqual(sys.getsizeof(True), vsize('') + self.longdigit)
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
723 # but lists are
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
724 self.assertEqual(sys.getsizeof([]), vsize('Pn') + gc_header_size)
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
725
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
726 def test_default(self):
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
727 size = test.support.calcvobjsize
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
728 self.assertEqual(sys.getsizeof(True), size('') + self.longdigit)
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
729 self.assertEqual(sys.getsizeof(True, -1), size('') + self.longdigit)
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
730
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
731 def test_objecttypes(self):
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
732 # check all types defined in Objects/
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
733 size = test.support.calcobjsize
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
734 vsize = test.support.calcvobjsize
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
735 check = self.check_sizeof
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
736 # bool
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
737 check(True, vsize('') + self.longdigit)
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
738 # buffer
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
739 # XXX
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
740 # builtin_function_or_method
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
741 check(len, size('3P')) # XXX check layout
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
742 # bytearray
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
743 samples = [b'', b'u'*100000]
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
744 for sample in samples:
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
745 x = bytearray(sample)
85969
499a96611baa Issue #19087: Improve bytearray allocation in order to allow cheap popping of data at the front (slice deletion).
Antoine Pitrou <solipsis@pitrou.net>
parents: 85673
diff changeset
746 check(x, vsize('n2Pi') + x.__alloc__())
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
747 # bytearray_iterator
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
748 check(iter(bytearray()), size('nP'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
749 # cell
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
750 def get_cell():
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
751 x = 42
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
752 def inner():
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
753 return x
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
754 return inner
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
755 check(get_cell().__closure__[0], size('P'))
47495
caa90cf6be9a Issue 3049: Some 3k sizeof tests fail.
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 47489
diff changeset
756 # code
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
757 check(get_cell().__code__, size('5i9Pi3P'))
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
758 check(get_cell.__code__, size('5i9Pi3P'))
78290
5093cfdff2a9 Issue #15456: Fix code __sizeof__ after #12399 change.
Martin v. Löwis <martin@v.loewis.de>
parents: 77577
diff changeset
759 def get_cell2(x):
5093cfdff2a9 Issue #15456: Fix code __sizeof__ after #12399 change.
Martin v. Löwis <martin@v.loewis.de>
parents: 77577
diff changeset
760 def inner():
5093cfdff2a9 Issue #15456: Fix code __sizeof__ after #12399 change.
Martin v. Löwis <martin@v.loewis.de>
parents: 77577
diff changeset
761 return x
5093cfdff2a9 Issue #15456: Fix code __sizeof__ after #12399 change.
Martin v. Löwis <martin@v.loewis.de>
parents: 77577
diff changeset
762 return inner
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
763 check(get_cell2.__code__, size('5i9Pi3P') + 1)
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
764 # complex
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
765 check(complex(0,1), size('2d'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
766 # method_descriptor (descriptor object)
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
767 check(str.lower, size('3PP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
768 # classmethod_descriptor (descriptor object)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
769 # XXX
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
770 # member_descriptor (descriptor object)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
771 import datetime
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
772 check(datetime.timedelta.days, size('3PP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
773 # getset_descriptor (descriptor object)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
774 import collections
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
775 check(collections.defaultdict.default_factory, size('3PP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
776 # wrapper_descriptor (descriptor object)
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
777 check(int.__add__, size('3P2P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
778 # method-wrapper (descriptor object)
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
779 check({}.__iter__, size('2P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
780 # dict
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
781 check({}, size('n2P' + '2nPn' + 8*'n2P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
782 longdict = {1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8}
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
783 check(longdict, size('n2P' + '2nPn') + 16*struct.calcsize('n2P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
784 # dictionary-keyiterator
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
785 check({}.keys(), size('P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
786 # dictionary-valueiterator
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
787 check({}.values(), size('P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
788 # dictionary-itemiterator
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
789 check({}.items(), size('P'))
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
790 # dictionary iterator
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
791 check(iter({}), size('P2nPn'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
792 # dictproxy
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
793 class C(object): pass
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
794 check(C.__dict__, size('P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
795 # BaseException
83931
c20b701c66fc Issue #18063: fix some struct specifications in the tests for sys.getsizeof().
Antoine Pitrou <solipsis@pitrou.net>
parents: 82839
diff changeset
796 check(BaseException(), size('5Pb'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
797 # UnicodeEncodeError
83931
c20b701c66fc Issue #18063: fix some struct specifications in the tests for sys.getsizeof().
Antoine Pitrou <solipsis@pitrou.net>
parents: 82839
diff changeset
798 check(UnicodeEncodeError("", "", 0, 0, ""), size('5Pb 2P2nP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
799 # UnicodeDecodeError
83931
c20b701c66fc Issue #18063: fix some struct specifications in the tests for sys.getsizeof().
Antoine Pitrou <solipsis@pitrou.net>
parents: 82839
diff changeset
800 check(UnicodeDecodeError("", b"", 0, 0, ""), size('5Pb 2P2nP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
801 # UnicodeTranslateError
83931
c20b701c66fc Issue #18063: fix some struct specifications in the tests for sys.getsizeof().
Antoine Pitrou <solipsis@pitrou.net>
parents: 82839
diff changeset
802 check(UnicodeTranslateError("", 0, 1, ""), size('5Pb 2P2nP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
803 # ellipses
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
804 check(Ellipsis, size(''))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
805 # EncodingMap
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
806 import codecs, encodings.iso8859_3
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
807 x = codecs.charmap_build(encodings.iso8859_3.decoding_table)
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
808 check(x, size('32B2iB'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
809 # enumerate
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
810 check(enumerate([]), size('n3P'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
811 # reverse
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
812 check(reversed(''), size('nP'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
813 # float
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
814 check(float(0), size('d'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
815 # sys.floatinfo
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
816 check(sys.float_info, vsize('') + self.P * len(sys.float_info))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
817 # frame
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
818 import inspect
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
819 CO_MAXBLOCKS = 20
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
820 x = inspect.currentframe()
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
821 ncells = len(x.f_code.co_cellvars)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
822 nfrees = len(x.f_code.co_freevars)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
823 extras = x.f_code.co_stacksize + x.f_code.co_nlocals +\
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
824 ncells + nfrees - 1
85046
862ab99ab570 Issue #17934: Add a clear() method to frame objects, to help clean up expensive details (local variables) and break reference cycles.
Antoine Pitrou <solipsis@pitrou.net>
parents: 84936
diff changeset
825 check(x, vsize('13P3ic' + CO_MAXBLOCKS*'3i' + 'P' + extras*'P'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
826 # function
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
827 def func(): pass
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
828 check(func, size('12P'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
829 class c():
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
830 @staticmethod
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
831 def foo():
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
832 pass
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
833 @classmethod
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
834 def bar(cls):
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
835 pass
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
836 # staticmethod
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
837 check(foo, size('PP'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
838 # classmethod
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
839 check(bar, size('PP'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
840 # generator
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
841 def get_gen(): yield 1
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
842 check(get_gen(), size('Pb2P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
843 # iterator
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
844 check(iter('abc'), size('lP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
845 # callable-iterator
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
846 import re
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
847 check(re.finditer('',''), size('2P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
848 # list
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
849 samples = [[], [1,2,3], ['1', '2', '3']]
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
850 for sample in samples:
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
851 check(sample, vsize('Pn') + len(sample)*self.P)
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
852 # sortwrapper (list)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
853 # XXX
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
854 # cmpwrapper (list)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
855 # XXX
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
856 # listiterator (list)
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
857 check(iter([]), size('lP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
858 # listreverseiterator (list)
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
859 check(reversed([]), size('nP'))
85418
4d62a62ba44d Issue #18783: Removed existing mentions of Python long type in docstrings,
Serhiy Storchaka <storchaka@gmail.com>
parents: 83931
diff changeset
860 # int
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
861 check(0, vsize(''))
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
862 check(1, vsize('') + self.longdigit)
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
863 check(-1, vsize('') + self.longdigit)
52215
bb5de24a343f Issue #4258: Make it possible to use 30-bit digits for PyLongs:
Mark Dickinson <dickinsm@gmail.com>
parents: 52145
diff changeset
864 PyLong_BASE = 2**sys.int_info.bits_per_digit
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
865 check(int(PyLong_BASE), vsize('') + 2*self.longdigit)
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
866 check(int(PyLong_BASE**2-1), vsize('') + 2*self.longdigit)
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
867 check(int(PyLong_BASE**2), vsize('') + 3*self.longdigit)
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
868 # memoryview
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
869 check(memoryview(b''), size('Pnin 2P2n2i5P 3cPn'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
870 # module
84936
79e2f5bbc30c Issue #18214: Improve finalization of Python modules to avoid setting their globals to None, in most cases.
Antoine Pitrou <solipsis@pitrou.net>
parents: 84911
diff changeset
871 check(unittest, size('PnPPP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
872 # None
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
873 check(None, size(''))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
874 # NotImplementedType
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
875 check(NotImplemented, size(''))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
876 # object
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
877 check(object(), size(''))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
878 # property (descriptor object)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
879 class C(object):
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
880 def getx(self): return self.__x
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
881 def setx(self, value): self.__x = value
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
882 def delx(self): del self.__x
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
883 x = property(getx, setx, delx, "")
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
884 check(x, size('4Pi'))
53816
911df82bc25d add a replacement API for PyCObject, PyCapsule #5630
Benjamin Peterson <benjamin@python.org>
parents: 53072
diff changeset
885 # PyCapsule
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
886 # XXX
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
887 # rangeiterator
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
888 check(iter(range(1)), size('4l'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
889 # reverse
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
890 check(reversed(''), size('nP'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
891 # range
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
892 check(range(1), size('4P'))
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
893 check(range(66000), size('4P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
894 # set
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
895 # frozenset
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
896 PySet_MINSIZE = 8
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
897 samples = [[], range(10), range(50)]
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
898 s = size('3n2P' + PySet_MINSIZE*'nP' + 'nP')
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
899 for sample in samples:
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
900 minused = len(sample)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
901 if minused == 0: tmp = 1
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
902 # the computation of minused is actually a bit more complicated
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
903 # but this suffices for the sizeof test
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
904 minused = minused*2
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
905 newsize = PySet_MINSIZE
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
906 while newsize <= minused:
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
907 newsize = newsize << 1
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
908 if newsize <= 8:
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
909 check(set(sample), s)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
910 check(frozenset(sample), s)
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
911 else:
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
912 check(set(sample), s + newsize*struct.calcsize('nP'))
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
913 check(frozenset(sample), s + newsize*struct.calcsize('nP'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
914 # setiterator
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
915 check(iter(set()), size('P3n'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
916 # slice
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
917 check(slice(0), size('3P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
918 # super
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
919 check(super(int), size('3P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
920 # tuple
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
921 check((), vsize(''))
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
922 check((1,2,3), vsize('') + 3*self.P)
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
923 # type
76530
b044e0568be2 Account for shared keys in type's __sizeof__ (#13903).
Martin v. Loewis <martin@v.loewis.de>
parents: 76485
diff changeset
924 # static type: PyTypeObject
84911
3f994367a979 Issue #18112: PEP 442 implementation (safe object finalization).
Antoine Pitrou <solipsis@pitrou.net>
parents: 83932
diff changeset
925 s = vsize('P2n15Pl4Pn9Pn11PIP')
76530
b044e0568be2 Account for shared keys in type's __sizeof__ (#13903).
Martin v. Loewis <martin@v.loewis.de>
parents: 76485
diff changeset
926 check(int, s)
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
927 # (PyTypeObject + PyNumberMethods + PyMappingMethods +
76530
b044e0568be2 Account for shared keys in type's __sizeof__ (#13903).
Martin v. Loewis <martin@v.loewis.de>
parents: 76485
diff changeset
928 # PySequenceMethods + PyBufferProcs + 4P)
84911
3f994367a979 Issue #18112: PEP 442 implementation (safe object finalization).
Antoine Pitrou <solipsis@pitrou.net>
parents: 83932
diff changeset
929 s = vsize('P2n15Pl4Pn9Pn11PIP') + struct.calcsize('34P 3P 10P 2P 4P')
76530
b044e0568be2 Account for shared keys in type's __sizeof__ (#13903).
Martin v. Loewis <martin@v.loewis.de>
parents: 76485
diff changeset
930 # Separate block for PyDictKeysObject with 4 entries
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
931 s += struct.calcsize("2nPn") + 4*struct.calcsize("n2P")
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
932 # class
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
933 class newstyleclass(object): pass
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
934 check(newstyleclass, s)
76530
b044e0568be2 Account for shared keys in type's __sizeof__ (#13903).
Martin v. Loewis <martin@v.loewis.de>
parents: 76485
diff changeset
935 # dict with shared keys
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
936 check(newstyleclass().__dict__, size('n2P' + '2nPn'))
47562
bd584f121c4b Merged revisions 64002-64003,64012,64036-64037,64047,64050-64052,64054-64055,64066,64071 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47553
diff changeset
937 # unicode
72475
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
938 # each tuple contains a string and its expected character size
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
939 # don't put any static strings here, as they may contain
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
940 # wchar_t or UTF-8 representations
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
941 samples = ['1'*100, '\xff'*50,
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
942 '\u0100'*40, '\uffff'*100,
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
943 '\U00010000'*30, '\U0010ffff'*100]
83931
c20b701c66fc Issue #18063: fix some struct specifications in the tests for sys.getsizeof().
Antoine Pitrou <solipsis@pitrou.net>
parents: 82839
diff changeset
944 asciifields = "nnbP"
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
945 compactfields = asciifields + "nPn"
72475
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
946 unicodefields = compactfields + "P"
47562
bd584f121c4b Merged revisions 64002-64003,64012,64036-64037,64047,64050-64052,64054-64055,64066,64071 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47553
diff changeset
947 for s in samples:
72475
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
948 maxchar = ord(max(s))
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
949 if maxchar < 128:
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
950 L = size(asciifields) + len(s) + 1
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
951 elif maxchar < 256:
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
952 L = size(compactfields) + len(s) + 1
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
953 elif maxchar < 65536:
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
954 L = size(compactfields) + 2*(len(s) + 1)
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
955 else:
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
956 L = size(compactfields) + 4*(len(s) + 1)
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
957 check(s, L)
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
958 # verify that the UTF-8 size is accounted for
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
959 s = chr(0x4000) # 4 bytes canonical representation
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
960 check(s, size(compactfields) + 4)
72479
636444a2827e Use compile() instead of eval().
Martin v. Löwis <martin@v.loewis.de>
parents: 72478
diff changeset
961 # compile() will trigger the generation of the UTF-8
636444a2827e Use compile() instead of eval().
Martin v. Löwis <martin@v.loewis.de>
parents: 72478
diff changeset
962 # representation as a side effect
636444a2827e Use compile() instead of eval().
Martin v. Löwis <martin@v.loewis.de>
parents: 72478
diff changeset
963 compile(s, "<stdin>", "eval")
636444a2827e Use compile() instead of eval().
Martin v. Löwis <martin@v.loewis.de>
parents: 72478
diff changeset
964 check(s, size(compactfields) + 4 + 4)
72475
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
965 # TODO: add check that forces the presence of wchar_t representation
8beaa9a37387 Implement PEP 393.
Martin v. Löwis <martin@v.loewis.de>
parents: 70987
diff changeset
966 # TODO: add check that forces layout of unicodefields
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
967 # weakref
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
968 import weakref
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
969 check(weakref.ref(int), size('2Pn2P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
970 # weakproxy
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
971 # XXX
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
972 # weakcallableproxy
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
973 check(weakref.proxy(int), size('2Pn2P'))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
974
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
975 def test_pythontypes(self):
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
976 # check all types defined in Python/
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
977 size = test.support.calcobjsize
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
978 vsize = test.support.calcvobjsize
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
979 check = self.check_sizeof
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
980 # _ast.AST
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
981 import _ast
78316
d43ff8eb4cb3 Issue #15467: Merge 3.2
Martin v. Löwis <martin@v.loewis.de>
parents: 78290 78315
diff changeset
982 check(_ast.AST(), size('P'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
983 try:
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
984 raise TypeError
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
985 except TypeError:
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
986 tb = sys.exc_info()[2]
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
987 # traceback
79626
332b93ce7bf9 compare singletons by identity not equality (closes #16712)
Benjamin Peterson <benjamin@python.org>
parents: 79242
diff changeset
988 if tb is not None:
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
989 check(tb, size('2P2i'))
48467
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
990 # symtable entry
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
991 # XXX
c0c06ffaea83 Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents: 48382
diff changeset
992 # sys.flags
78315
efade142ef01 Issue #15467: Move helpers for __sizeof__ tests into test_support.
Martin v. Löwis <martin@v.loewis.de>
parents: 75073
diff changeset
993 check(sys.flags, vsize('') + self.P * len(sys.flags))
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
994
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
995
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
996 def test_main():
47466
58f4b60773fe Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents: 47465
diff changeset
997 test.support.run_unittest(SysModuleTest, SizeofTest)
27660
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
998
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
999 if __name__ == "__main__":
6a1394660270 Add a new test script that tests various features of the sys
Walter Dörwald <walter@livinglogic.de>
parents:
diff changeset
1000 test_main()