123456789101112131415161718192021222324252627282930313233 |
- # -*- coding: utf-8 -*-
- """
- Helper for testing a C++ exception throw aborts the process.
- Takes one argument, the name of the function in :mod:`_test_extension_cpp` to call.
- """
- import sys
- import greenlet
- from greenlet.tests import _test_extension_cpp
- print('fail_cpp_exception is running')
- def run_unhandled_exception_in_greenlet_aborts():
- def _():
- _test_extension_cpp.test_exception_switch_and_do_in_g2(
- _test_extension_cpp.test_exception_throw_nonstd
- )
- g1 = greenlet.greenlet(_)
- g1.switch()
- func_name = sys.argv[1]
- try:
- func = getattr(_test_extension_cpp, func_name)
- except AttributeError:
- if func_name == run_unhandled_exception_in_greenlet_aborts.__name__:
- func = run_unhandled_exception_in_greenlet_aborts
- elif func_name == 'run_as_greenlet_target':
- g = greenlet.greenlet(_test_extension_cpp.test_exception_throw_std)
- func = g.switch
- else:
- raise
- print('raising', func, flush=True)
- func()
|