summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_generators.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-06-03 01:51:43 (GMT)
committerGitHub <noreply@github.com>2019-06-03 01:51:43 (GMT)
commit0025350294959594e7f57aef4fc9579c77a0ed1c (patch)
tree8fb501ae17c33b278f4a9a2aa38a96b8b5f35164 /Lib/test/test_generators.py
parent13136e83a637a9f1cfbada7e93097005296659b4 (diff)
downloadcpython-0025350294959594e7f57aef4fc9579c77a0ed1c.zip
cpython-0025350294959594e7f57aef4fc9579c77a0ed1c.tar.gz
cpython-0025350294959594e7f57aef4fc9579c77a0ed1c.tar.bz2
bpo-37069: tests use catch_unraisable_exception() (GH-13762)
Modify test_coroutines, test_cprofile, test_generators, test_raise, test_ssl and test_yield_from to use support.catch_unraisable_exception() rather than support.captured_stderr(). test_thread: remove test_save_exception_state_on_error() which is now updated. test_unraisable_exception() checks that sys.unraisablehook() is called to handle _thread.start_new_thread() exception. test_cprofile now rely on unittest for test discovery: replace support.run_unittest() with unittest.main().
Diffstat (limited to 'Lib/test/test_generators.py')
-rw-r--r--Lib/test/test_generators.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
index 7f1472f..a34e4ec 100644
--- a/Lib/test/test_generators.py
+++ b/Lib/test/test_generators.py
@@ -2051,15 +2051,17 @@ RuntimeError: generator ignored GeneratorExit
Our ill-behaved code should be invoked during GC:
->>> import sys, io
->>> old, sys.stderr = sys.stderr, io.StringIO()
->>> g = f()
->>> next(g)
->>> del g
->>> "RuntimeError: generator ignored GeneratorExit" in sys.stderr.getvalue()
+>>> with support.catch_unraisable_exception() as cm:
+... g = f()
+... next(g)
+... del g
+...
+... cm.unraisable.exc_type == RuntimeError
+... "generator ignored GeneratorExit" in str(cm.unraisable.exc_value)
+... cm.unraisable.exc_traceback is not None
+True
+True
True
->>> sys.stderr = old
-
And errors thrown during closing should propagate: