Skip to content

Commit fceb517

Browse files
[3.14] gh-128509: Add tests on sys._is_immortal() (GH-157376) (#157446)
gh-128509: Add tests on sys._is_immortal() (GH-157376) (cherry picked from commit fb46c67) Co-authored-by: Victor Stinner <vstinner@python.org>
1 parent 0e6a7f8 commit fceb517

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

Lib/test/test_sys.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,6 +1357,37 @@ def test_int_max_str_digits(self):
13571357
with self.assertRaises(TypeError):
13581358
sys.set_int_max_str_digits(2_048.0)
13591359

1360+
@test.support.cpython_only
1361+
def test_is_immortal(self):
1362+
is_immortal = sys._is_immortal
1363+
1364+
# Singletons
1365+
self.assertTrue(is_immortal(None))
1366+
self.assertTrue(is_immortal(False))
1367+
self.assertTrue(is_immortal(True))
1368+
self.assertTrue(is_immortal(0))
1369+
self.assertTrue(is_immortal(b''))
1370+
self.assertTrue(is_immortal(''))
1371+
self.assertTrue(is_immortal(b'x'))
1372+
self.assertTrue(is_immortal('x'))
1373+
self.assertTrue(is_immortal(()))
1374+
1375+
# Static types
1376+
self.assertTrue(is_immortal(int))
1377+
self.assertTrue(is_immortal(dict))
1378+
1379+
# Test some mortal objects
1380+
class PythonType:
1381+
pass
1382+
self.assertFalse(is_immortal([1, 2, 3]))
1383+
self.assertFalse(is_immortal({'key': 5}))
1384+
self.assertFalse(is_immortal(object()))
1385+
self.assertFalse(is_immortal(PythonType))
1386+
self.assertFalse(is_immortal(2 ** 100))
1387+
# Use encode/decode to get a fresh object
1388+
self.assertFalse(is_immortal(b'abc'.decode()))
1389+
self.assertFalse(is_immortal('abc'.encode()))
1390+
13601391

13611392
@test.support.cpython_only
13621393
class UnraisableHookTest(unittest.TestCase):

0 commit comments

Comments
 (0)