summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_thread.py
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2012-04-02 15:28:49 (GMT)
committerBenjamin Peterson <benjamin@python.org>2012-04-02 15:28:49 (GMT)
commitdba1b40b6064107d63f228fe67a258dd1123b189 (patch)
treea6ebdf8a8504bb769e622ffb7a5cc85aa2a49652 /Lib/test/test_thread.py
parent38548ad006ee5df07a680ee06d88e8509cdbe3ea (diff)
parente900096dc42cd0d590752e00ba3983b4672da806 (diff)
downloadcpython-dba1b40b6064107d63f228fe67a258dd1123b189.zip
cpython-dba1b40b6064107d63f228fe67a258dd1123b189.tar.gz
cpython-dba1b40b6064107d63f228fe67a258dd1123b189.tar.bz2
merge 3.2
Diffstat (limited to 'Lib/test/test_thread.py')
-rw-r--r--Lib/test/test_thread.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/Lib/test/test_thread.py b/Lib/test/test_thread.py
index 894a493..deb4bf3 100644
--- a/Lib/test/test_thread.py
+++ b/Lib/test/test_thread.py
@@ -128,6 +128,30 @@ class ThreadRunningTests(BasicThreadTest):
time.sleep(0.01)
self.assertEqual(thread._count(), orig)
+ def test_save_exception_state_on_error(self):
+ # See issue #14474
+ def task():
+ started.release()
+ sys.stderr = stderr
+ raise SyntaxError
+ def mywrite(self, *args):
+ try:
+ raise ValueError
+ except ValueError:
+ pass
+ real_write(self, *args)
+ c = thread._count()
+ started = thread.allocate_lock()
+ with support.captured_output("stderr") as stderr:
+ real_write = stderr.write
+ stderr.write = mywrite
+ started.acquire()
+ thread.start_new_thread(task, ())
+ started.acquire()
+ while thread._count() > c:
+ pass
+ self.assertIn("Traceback", stderr.getvalue())
+
class Barrier:
def __init__(self, num_threads):