mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
bpo-46542: test_json uses support.infinite_recursion() (GH-30972)
Fix test_json tests checking for RecursionError: modify these tests to use support.infinite_recursion().
This commit is contained in:
parent
18ea973c21
commit
e7a6285f1b
2 changed files with 15 additions and 6 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
from test import support
|
||||||
from test.test_json import PyTest, CTest
|
from test.test_json import PyTest, CTest
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,11 +70,14 @@ class TestRecursion:
|
||||||
# test that loading highly-nested objects doesn't segfault when C
|
# test that loading highly-nested objects doesn't segfault when C
|
||||||
# accelerations are used. See #12017
|
# accelerations are used. See #12017
|
||||||
with self.assertRaises(RecursionError):
|
with self.assertRaises(RecursionError):
|
||||||
self.loads('{"a":' * 100000 + '1' + '}' * 100000)
|
with support.infinite_recursion():
|
||||||
|
self.loads('{"a":' * 100000 + '1' + '}' * 100000)
|
||||||
with self.assertRaises(RecursionError):
|
with self.assertRaises(RecursionError):
|
||||||
self.loads('{"a":' * 100000 + '[1]' + '}' * 100000)
|
with support.infinite_recursion():
|
||||||
|
self.loads('{"a":' * 100000 + '[1]' + '}' * 100000)
|
||||||
with self.assertRaises(RecursionError):
|
with self.assertRaises(RecursionError):
|
||||||
self.loads('[' * 100000 + '1' + ']' * 100000)
|
with support.infinite_recursion():
|
||||||
|
self.loads('[' * 100000 + '1' + ']' * 100000)
|
||||||
|
|
||||||
def test_highly_nested_objects_encoding(self):
|
def test_highly_nested_objects_encoding(self):
|
||||||
# See #12051
|
# See #12051
|
||||||
|
@ -81,9 +85,11 @@ class TestRecursion:
|
||||||
for x in range(100000):
|
for x in range(100000):
|
||||||
l, d = [l], {'k':d}
|
l, d = [l], {'k':d}
|
||||||
with self.assertRaises(RecursionError):
|
with self.assertRaises(RecursionError):
|
||||||
self.dumps(l)
|
with support.infinite_recursion():
|
||||||
|
self.dumps(l)
|
||||||
with self.assertRaises(RecursionError):
|
with self.assertRaises(RecursionError):
|
||||||
self.dumps(d)
|
with support.infinite_recursion():
|
||||||
|
self.dumps(d)
|
||||||
|
|
||||||
def test_endless_recursion(self):
|
def test_endless_recursion(self):
|
||||||
# See #12051
|
# See #12051
|
||||||
|
@ -93,7 +99,8 @@ class TestRecursion:
|
||||||
return [o]
|
return [o]
|
||||||
|
|
||||||
with self.assertRaises(RecursionError):
|
with self.assertRaises(RecursionError):
|
||||||
EndlessJSONEncoder(check_circular=False).encode(5j)
|
with support.infinite_recursion():
|
||||||
|
EndlessJSONEncoder(check_circular=False).encode(5j)
|
||||||
|
|
||||||
|
|
||||||
class TestPyRecursion(TestRecursion, PyTest): pass
|
class TestPyRecursion(TestRecursion, PyTest): pass
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Fix ``test_json`` tests checking for :exc:`RecursionError`: modify these tests
|
||||||
|
to use ``support.infinite_recursion()``. Patch by Victor Stinner.
|
Loading…
Add table
Add a link
Reference in a new issue