Mercurial > cpython-lru_cache-weakref
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 |
| 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 | 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 | 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 | 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 | 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 | 727 size = test.support.calcvobjsize |
| 728 self.assertEqual(sys.getsizeof(True), size('') + self.longdigit) | |
| 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 | 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 | 757 check(get_cell().__code__, size('5i9Pi3P')) |
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 912 check(set(sample), s + newsize*struct.calcsize('nP')) |
| 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 | 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 | 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 | 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 | 938 # each tuple contains a string and its expected character size |
| 939 # don't put any static strings here, as they may contain | |
| 940 # wchar_t or UTF-8 representations | |
| 941 samples = ['1'*100, '\xff'*50, | |
| 942 '\u0100'*40, '\uffff'*100, | |
| 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 | 945 compactfields = asciifields + "nPn" |
| 72475 | 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 | 948 maxchar = ord(max(s)) |
| 949 if maxchar < 128: | |
| 950 L = size(asciifields) + len(s) + 1 | |
| 951 elif maxchar < 256: | |
| 952 L = size(compactfields) + len(s) + 1 | |
| 953 elif maxchar < 65536: | |
| 954 L = size(compactfields) + 2*(len(s) + 1) | |
| 955 else: | |
| 956 L = size(compactfields) + 4*(len(s) + 1) | |
| 957 check(s, L) | |
| 958 # verify that the UTF-8 size is accounted for | |
| 959 s = chr(0x4000) # 4 bytes canonical representation | |
| 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 | 965 # TODO: add check that forces the presence of wchar_t representation |
| 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 | 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 | 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 | 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() |
