SILENT KILLERPanel

Current Path: > > opt > > hc_python > > > lib64 > python3.12 > site-packages > greenlet > tests


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt//hc_python///lib64/python3.12/site-packages/greenlet/tests

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
__init__.py File 9361 bytes May 23 2025 10:34:46.
_test_extension.c File 5773 bytes May 23 2025 10:34:46.
_test_extension.cpython-312-x86_64-linux-gnu.so File 17256 bytes May 23 2025 10:34:46.
_test_extension_cpp.cpp File 6565 bytes May 23 2025 10:34:46.
_test_extension_cpp.cpython-312-x86_64-linux-gnu.so File 58384 bytes May 23 2025 10:34:46.
fail_clearing_run_switches.py File 1263 bytes May 23 2025 10:34:46.
fail_cpp_exception.py File 985 bytes May 23 2025 10:34:46.
fail_initialstub_already_started.py File 1961 bytes May 23 2025 10:34:46.
fail_slp_switch.py File 524 bytes May 23 2025 10:34:46.
fail_switch_three_greenlets.py File 956 bytes May 23 2025 10:34:46.
fail_switch_three_greenlets2.py File 1285 bytes May 23 2025 10:34:46.
fail_switch_two_greenlets.py File 817 bytes May 23 2025 10:34:46.
leakcheck.py File 11964 bytes May 23 2025 10:34:46.
test_contextvars.py File 10541 bytes May 23 2025 10:34:46.
test_cpp.py File 2736 bytes May 23 2025 10:34:46.
test_extension_interface.py File 3829 bytes May 23 2025 10:34:46.
test_gc.py File 2923 bytes May 23 2025 10:34:46.
test_generator.py File 1240 bytes May 23 2025 10:34:46.
test_generator_nested.py File 3718 bytes May 23 2025 10:34:46.
test_greenlet.py File 46251 bytes May 23 2025 10:34:46.
test_greenlet_trash.py File 7947 bytes May 23 2025 10:34:46.
test_leaks.py File 17714 bytes May 23 2025 10:34:46.
test_stack_saved.py File 446 bytes May 23 2025 10:34:46.
test_throw.py File 3712 bytes May 23 2025 10:34:46.
test_tracing.py File 8250 bytes May 23 2025 10:34:46.
test_version.py File 1339 bytes May 23 2025 10:34:46.
test_weakref.py File 883 bytes May 23 2025 10:34:46.

Reading File: //opt//hc_python///lib64/python3.12/site-packages/greenlet/tests/test_cpp.py

from __future__ import print_function
from __future__ import absolute_import

import subprocess
import unittest

import greenlet
from . import _test_extension_cpp
from . import TestCase
from . import WIN

class CPPTests(TestCase):
    def test_exception_switch(self):
        greenlets = []
        for i in range(4):
            g = greenlet.greenlet(_test_extension_cpp.test_exception_switch)
            g.switch(i)
            greenlets.append(g)
        for i, g in enumerate(greenlets):
            self.assertEqual(g.switch(), i)

    def _do_test_unhandled_exception(self, target):
        import os
        import sys
        script = os.path.join(
            os.path.dirname(__file__),
            'fail_cpp_exception.py',
        )
        args = [sys.executable, script, target.__name__ if not isinstance(target, str) else target]
        __traceback_info__ = args
        with self.assertRaises(subprocess.CalledProcessError) as exc:
            subprocess.check_output(
                args,
                encoding='utf-8',
                stderr=subprocess.STDOUT
            )

        ex = exc.exception
        expected_exit = self.get_expected_returncodes_for_aborted_process()
        self.assertIn(ex.returncode, expected_exit)
        self.assertIn('fail_cpp_exception is running', ex.output)
        return ex.output


    def test_unhandled_nonstd_exception_aborts(self):
        # verify that plain unhandled throw aborts
        self._do_test_unhandled_exception(_test_extension_cpp.test_exception_throw_nonstd)

    def test_unhandled_std_exception_aborts(self):
        # verify that plain unhandled throw aborts
        self._do_test_unhandled_exception(_test_extension_cpp.test_exception_throw_std)

    @unittest.skipIf(WIN, "XXX: This does not crash on Windows")
    # Meaning the exception is getting lost somewhere...
    def test_unhandled_std_exception_as_greenlet_function_aborts(self):
        # verify that plain unhandled throw aborts
        output = self._do_test_unhandled_exception('run_as_greenlet_target')
        self.assertIn(
            # We really expect this to be prefixed with "greenlet: Unhandled C++ exception:"
            # as added by our handler for std::exception (see TUserGreenlet.cpp), but
            # that's not correct everywhere --- our handler never runs before std::terminate
            # gets called (for example, on arm32).
            'Thrown from an extension.',
            output
        )

    def test_unhandled_exception_in_greenlet_aborts(self):
        # verify that unhandled throw called in greenlet aborts too
        self._do_test_unhandled_exception('run_unhandled_exception_in_greenlet_aborts')


if __name__ == '__main__':
    unittest.main()

SILENT KILLER Tool