mirror of
https://github.com/python/cpython.git
synced 2025-07-24 03:35:53 +00:00
bpo-46542: test_lib2to3 uses support.infinite_recursion() (GH-31035)
* bpo-46542: test_lib2to3 uses support.infinite_recursion() Fix a Python crash in test_lib2to3 when using Python built in debug mode: limit the recursion limit. The test_all_project_files() test of test_lib2to3 now uses the test.support.infinite_recursion() context manager when processing the infinite_recursion.py file to prevent a crash when Python is built in debug mode. The two test_all_project_files() tests now use subTest() and log the refactored/parsed filename (if test_lib2to3 is run in verbose mode). * Update Lib/lib2to3/tests/data/infinite_recursion.py Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com> Co-authored-by: Łukasz Langa <lukasz@langa.pl> Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
parent
768569325a
commit
ee0ac328d3
5 changed files with 47 additions and 23 deletions
|
@ -6,8 +6,10 @@ running time.
|
|||
# Author: Collin Winter
|
||||
|
||||
# Python imports
|
||||
import unittest
|
||||
import os.path
|
||||
import sys
|
||||
import test.support
|
||||
import unittest
|
||||
|
||||
# Local imports
|
||||
from . import support
|
||||
|
@ -19,9 +21,22 @@ class Test_all(support.TestCase):
|
|||
def setUp(self):
|
||||
self.refactor = support.get_refactorer()
|
||||
|
||||
def refactor_file(self, filepath):
|
||||
if test.support.verbose:
|
||||
print(f"Refactor file: {filepath}")
|
||||
if os.path.basename(filepath) == 'infinite_recursion.py':
|
||||
# bpo-46542: Processing infinite_recursion.py can crash Python
|
||||
# if Python is built in debug mode: lower the recursion limit
|
||||
# to prevent a crash.
|
||||
with test.support.infinite_recursion(150):
|
||||
self.refactor.refactor_file(filepath)
|
||||
else:
|
||||
self.refactor.refactor_file(filepath)
|
||||
|
||||
def test_all_project_files(self):
|
||||
for filepath in support.all_project_files():
|
||||
self.refactor.refactor_file(filepath)
|
||||
with self.subTest(filepath=filepath):
|
||||
self.refactor_file(filepath)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue