diff options
author | Irit Katriel <iritkatriel@yahoo.com> | 2021-05-18 13:53:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-18 13:53:57 (GMT) |
commit | 373741a97c9f6ffee427c2b4eaccb74347af228a (patch) | |
tree | 54b0d882615a6ef265c542f39e94647f9e7a48fc /Lib/test/test_threading.py | |
parent | a44bb6ddb17538b7b2096d13eb79a1208bd97f34 (diff) | |
download | cpython-373741a97c9f6ffee427c2b4eaccb74347af228a.zip cpython-373741a97c9f6ffee427c2b4eaccb74347af228a.tar.gz cpython-373741a97c9f6ffee427c2b4eaccb74347af228a.tar.bz2 |
[3.10] bpo-25872: Add unit tests for linecache and threading (GH-25913) (GH-26212)
(cherry picked from commit 115dea9e2602b96b63390f00cc880e90c433efa2)
Co-authored-by: uniocto <serit142sa33go@gmail.com>
Diffstat (limited to 'Lib/test/test_threading.py')
-rw-r--r-- | Lib/test/test_threading.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 08c0ccd..b563797 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -4,7 +4,7 @@ Tests for the threading module. import test.support from test.support import threading_helper -from test.support import verbose, cpython_only +from test.support import verbose, cpython_only, os_helper from test.support.import_helper import import_module from test.support.script_helper import assert_python_ok, assert_python_failure @@ -19,6 +19,7 @@ import os import subprocess import signal import textwrap +import traceback from unittest import mock from test import lock_tests @@ -1345,6 +1346,22 @@ class ThreadingExceptionTests(BaseTestCase): # explicitly break the reference cycle to not leak a dangling thread thread.exc = None + def test_multithread_modify_file_noerror(self): + # See issue25872 + def modify_file(): + with open(os_helper.TESTFN, 'w', encoding='utf-8') as fp: + fp.write(' ') + traceback.format_stack() + + self.addCleanup(os_helper.unlink, os_helper.TESTFN) + threads = [ + threading.Thread(target=modify_file) + for i in range(100) + ] + for t in threads: + t.start() + t.join() + class ThreadRunFail(threading.Thread): def run(self): |