@@ -1374,6 +1374,37 @@ def test_int_max_str_digits(self):
13741374 with self .assertRaises (TypeError ):
13751375 sys .set_int_max_str_digits (2_048.0 )
13761376
1377+ @test .support .cpython_only
1378+ def test_is_immortal (self ):
1379+ is_immortal = sys ._is_immortal
1380+
1381+ # Singletons
1382+ self .assertTrue (is_immortal (None ))
1383+ self .assertTrue (is_immortal (False ))
1384+ self .assertTrue (is_immortal (True ))
1385+ self .assertTrue (is_immortal (0 ))
1386+ self .assertTrue (is_immortal (b'' ))
1387+ self .assertTrue (is_immortal ('' ))
1388+ self .assertTrue (is_immortal (b'x' ))
1389+ self .assertTrue (is_immortal ('x' ))
1390+ self .assertTrue (is_immortal (()))
1391+
1392+ # Static types
1393+ self .assertTrue (is_immortal (int ))
1394+ self .assertTrue (is_immortal (dict ))
1395+
1396+ # Test some mortal objects
1397+ class PythonType :
1398+ pass
1399+ self .assertFalse (is_immortal ([1 , 2 , 3 ]))
1400+ self .assertFalse (is_immortal ({'key' : 5 }))
1401+ self .assertFalse (is_immortal (object ()))
1402+ self .assertFalse (is_immortal (PythonType ))
1403+ self .assertFalse (is_immortal (2 ** 100 ))
1404+ # Use encode/decode to get a fresh object
1405+ self .assertFalse (is_immortal (b'abc' .decode ()))
1406+ self .assertFalse (is_immortal ('abc' .encode ()))
1407+
13771408
13781409@test .support .cpython_only
13791410@test .support .force_not_colorized_test_class
0 commit comments