@@ -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
13621393class UnraisableHookTest (unittest .TestCase ):
0 commit comments