opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
greenlet
/
tests
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] __pycache__
N/A
__init__.py
9.03 KB
Rename
Delete
_test_extension.c
5.64 KB
Rename
Delete
_test_extension.cpython-312-x86_64-linux-gnu.so
36.30 KB
Rename
Delete
_test_extension_cpp.cpp
6.41 KB
Rename
Delete
_test_extension_cpp.cpython-312-x86_64-linux-gnu.so
56.45 KB
Rename
Delete
fail_clearing_run_switches.py
1.23 KB
Rename
Delete
fail_cpp_exception.py
985 bytes
Rename
Delete
fail_initialstub_already_started.py
1.92 KB
Rename
Delete
fail_slp_switch.py
524 bytes
Rename
Delete
fail_switch_three_greenlets.py
956 bytes
Rename
Delete
fail_switch_three_greenlets2.py
1.25 KB
Rename
Delete
fail_switch_two_greenlets.py
817 bytes
Rename
Delete
leakcheck.py
11.68 KB
Rename
Delete
test_contextvars.py
10.11 KB
Rename
Delete
test_cpp.py
2.67 KB
Rename
Delete
test_extension_interface.py
3.74 KB
Rename
Delete
test_gc.py
2.85 KB
Rename
Delete
test_generator.py
1.21 KB
Rename
Delete
test_generator_nested.py
3.63 KB
Rename
Delete
test_greenlet.py
44.91 KB
Rename
Delete
test_greenlet_trash.py
7.76 KB
Rename
Delete
test_leaks.py
17.06 KB
Rename
Delete
test_stack_saved.py
446 bytes
Rename
Delete
test_throw.py
3.63 KB
Rename
Delete
test_tracing.py
8.06 KB
Rename
Delete
test_version.py
1.31 KB
Rename
Delete
test_weakref.py
883 bytes
Rename
Delete
""" Testing initialstub throwing an already started exception. """ import greenlet a = None b = None c = None main = greenlet.getcurrent() # If we switch into a dead greenlet, # we go looking for its parents. # if a parent is not yet started, we start it. results = [] def a_run(*args): #results.append('A') results.append(('Begin A', args)) def c_run(): results.append('Begin C') b.switch('From C') results.append('C done') class A(greenlet.greenlet): pass class B(greenlet.greenlet): doing_it = False def __getattribute__(self, name): if name == 'run' and not self.doing_it: assert greenlet.getcurrent() is c self.doing_it = True results.append('Switch to b from B.__getattribute__ in ' + type(greenlet.getcurrent()).__name__) b.switch() results.append('B.__getattribute__ back from main in ' + type(greenlet.getcurrent()).__name__) if name == 'run': name = '_B_run' return object.__getattribute__(self, name) def _B_run(self, *arg): results.append(('Begin B', arg)) results.append('_B_run switching to main') main.switch('From B') class C(greenlet.greenlet): pass a = A(a_run) b = B(parent=a) c = C(c_run, b) # Start a child; while running, it will start B, # but starting B will ALSO start B. result = c.switch() results.append(('main from c', result)) # Switch back to C, which was in the middle of switching # already. This will throw the ``GreenletStartedWhileInPython`` # exception, which results in parent A getting started (B is finished) c.switch() results.append(('A dead?', a.dead, 'B dead?', b.dead, 'C dead?', c.dead)) # A and B should both be dead now. assert a.dead assert b.dead assert not c.dead result = c.switch() results.append(('main from c.2', result)) # Now C is dead assert c.dead print("RESULTS:", results)
Save