https://github.com/python/cpython/commit/fceb5179ff6ffa5aa9b72c13bb73bee2ce8498fb
commit: fceb5179ff6ffa5aa9b72c13bb73bee2ce8498fb
branch: 3.14
author: Miss Islington (bot) <[email protected]>
committer: vstinner <[email protected]>
date: 2026-09-13T18:41:01Z
summary:

[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 fb46c67d56c16b3235db8a051a0834a146897287)

Co-authored-by: Victor Stinner <[email protected]>

files:
M Lib/test/test_sys.py

diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index e31020b6f8549e..cad6c37e1feb57 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -1357,6 +1357,37 @@ def test_int_max_str_digits(self):
         with self.assertRaises(TypeError):
             sys.set_int_max_str_digits(2_048.0)
 
+    @test.support.cpython_only
+    def test_is_immortal(self):
+        is_immortal = sys._is_immortal
+
+        # Singletons
+        self.assertTrue(is_immortal(None))
+        self.assertTrue(is_immortal(False))
+        self.assertTrue(is_immortal(True))
+        self.assertTrue(is_immortal(0))
+        self.assertTrue(is_immortal(b''))
+        self.assertTrue(is_immortal(''))
+        self.assertTrue(is_immortal(b'x'))
+        self.assertTrue(is_immortal('x'))
+        self.assertTrue(is_immortal(()))
+
+        # Static types
+        self.assertTrue(is_immortal(int))
+        self.assertTrue(is_immortal(dict))
+
+        # Test some mortal objects
+        class PythonType:
+            pass
+        self.assertFalse(is_immortal([1, 2, 3]))
+        self.assertFalse(is_immortal({'key': 5}))
+        self.assertFalse(is_immortal(object()))
+        self.assertFalse(is_immortal(PythonType))
+        self.assertFalse(is_immortal(2 ** 100))
+        # Use encode/decode to get a fresh object
+        self.assertFalse(is_immortal(b'abc'.decode()))
+        self.assertFalse(is_immortal('abc'.encode()))
+
 
 @test.support.cpython_only
 class UnraisableHookTest(unittest.TestCase):

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to