mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-02 19:39:49 +09:00
Update test_isinstance.py to 3.14.4 (#7806)
This commit is contained in:
21
Lib/test/test_isinstance.py
vendored
21
Lib/test/test_isinstance.py
vendored
@@ -263,17 +263,19 @@ class TestIsInstanceIsSubclass(unittest.TestCase):
|
||||
self.assertEqual(True, issubclass(int, (int, (float, int))))
|
||||
self.assertEqual(True, issubclass(str, (str, (Child, str))))
|
||||
|
||||
@support.skip_wasi_stack_overflow()
|
||||
@support.skip_emscripten_stack_overflow()
|
||||
def test_subclass_recursion_limit(self):
|
||||
# make sure that issubclass raises RecursionError before the C stack is
|
||||
# blown
|
||||
with support.infinite_recursion():
|
||||
self.assertRaises(RecursionError, blowstack, issubclass, str, str)
|
||||
self.assertRaises(RecursionError, blowstack, issubclass, str, str)
|
||||
|
||||
@support.skip_wasi_stack_overflow()
|
||||
@support.skip_emscripten_stack_overflow()
|
||||
def test_isinstance_recursion_limit(self):
|
||||
# make sure that issubclass raises RecursionError before the C stack is
|
||||
# blown
|
||||
with support.infinite_recursion():
|
||||
self.assertRaises(RecursionError, blowstack, isinstance, '', str)
|
||||
self.assertRaises(RecursionError, blowstack, isinstance, '', str)
|
||||
|
||||
def test_subclass_with_union(self):
|
||||
self.assertTrue(issubclass(int, int | float | int))
|
||||
@@ -315,6 +317,9 @@ class TestIsInstanceIsSubclass(unittest.TestCase):
|
||||
self.assertRaises(RecursionError, issubclass, int, X())
|
||||
self.assertRaises(RecursionError, isinstance, 1, X())
|
||||
|
||||
@support.skip_if_unlimited_stack_size
|
||||
@support.skip_emscripten_stack_overflow()
|
||||
@support.skip_wasi_stack_overflow()
|
||||
def test_infinite_recursion_via_bases_tuple(self):
|
||||
"""Regression test for bpo-30570."""
|
||||
class Failure(object):
|
||||
@@ -324,6 +329,9 @@ class TestIsInstanceIsSubclass(unittest.TestCase):
|
||||
with self.assertRaises(RecursionError):
|
||||
issubclass(Failure(), int)
|
||||
|
||||
@support.skip_if_unlimited_stack_size
|
||||
@support.skip_emscripten_stack_overflow()
|
||||
@support.skip_wasi_stack_overflow()
|
||||
def test_infinite_cycle_in_bases(self):
|
||||
"""Regression test for bpo-30570."""
|
||||
class X:
|
||||
@@ -352,8 +360,9 @@ def blowstack(fxn, arg, compare_to):
|
||||
# Make sure that calling isinstance with a deeply nested tuple for its
|
||||
# argument will raise RecursionError eventually.
|
||||
tuple_arg = (compare_to,)
|
||||
for cnt in range(support.exceeds_recursion_limit()):
|
||||
tuple_arg = (tuple_arg,)
|
||||
while True:
|
||||
for _ in range(100):
|
||||
tuple_arg = (tuple_arg,)
|
||||
fxn(arg, tuple_arg)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user