????JFIF??x?x????'
| Server IP : 172.67.174.47 / Your IP : 216.73.216.87 Web Server : LiteSpeed System : Linux premium151.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 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /././opt/hc_python/lib/python3.12/site-packages/greenlet/tests/ |
Upload File : |
from __future__ import print_function
from __future__ import absolute_import
import sys
import greenlet
from . import _test_extension
from . import TestCase
# pylint:disable=c-extension-no-member
class CAPITests(TestCase):
def test_switch(self):
self.assertEqual(
50, _test_extension.test_switch(greenlet.greenlet(lambda: 50)))
def test_switch_kwargs(self):
def adder(x, y):
return x * y
g = greenlet.greenlet(adder)
self.assertEqual(6, _test_extension.test_switch_kwargs(g, x=3, y=2))
def test_setparent(self):
# pylint:disable=disallowed-name
def foo():
def bar():
greenlet.getcurrent().parent.switch()
# This final switch should go back to the main greenlet, since
# the test_setparent() function in the C extension should have
# reparented this greenlet.
greenlet.getcurrent().parent.switch()
raise AssertionError("Should never have reached this code")
child = greenlet.greenlet(bar)
child.switch()
greenlet.getcurrent().parent.switch(child)
greenlet.getcurrent().parent.throw(
AssertionError("Should never reach this code"))
foo_child = greenlet.greenlet(foo).switch()
self.assertEqual(None, _test_extension.test_setparent(foo_child))
def test_getcurrent(self):
_test_extension.test_getcurrent()
def test_new_greenlet(self):
self.assertEqual(-15, _test_extension.test_new_greenlet(lambda: -15))
def test_raise_greenlet_dead(self):
self.assertRaises(
greenlet.GreenletExit, _test_extension.test_raise_dead_greenlet)
def test_raise_greenlet_error(self):
self.assertRaises(
greenlet.error, _test_extension.test_raise_greenlet_error)
def test_throw(self):
seen = []
def foo(): # pylint:disable=disallowed-name
try:
greenlet.getcurrent().parent.switch()
except ValueError:
seen.append(sys.exc_info()[1])
except greenlet.GreenletExit:
raise AssertionError
g = greenlet.greenlet(foo)
g.switch()
_test_extension.test_throw(g)
self.assertEqual(len(seen), 1)
self.assertTrue(
isinstance(seen[0], ValueError),
"ValueError was not raised in foo()")
self.assertEqual(
str(seen[0]),
'take that sucka!',
"message doesn't match")
def test_non_traceback_param(self):
with self.assertRaises(TypeError) as exc:
_test_extension.test_throw_exact(
greenlet.getcurrent(),
Exception,
Exception(),
self
)
self.assertEqual(str(exc.exception),
"throw() third argument must be a traceback object")
def test_instance_of_wrong_type(self):
with self.assertRaises(TypeError) as exc:
_test_extension.test_throw_exact(
greenlet.getcurrent(),
Exception(),
BaseException(),
None,
)
self.assertEqual(str(exc.exception),
"instance exception may not have a separate value")
def test_not_throwable(self):
with self.assertRaises(TypeError) as exc:
_test_extension.test_throw_exact(
greenlet.getcurrent(),
"abc",
None,
None,
)
self.assertEqual(str(exc.exception),
"exceptions must be classes, or instances, not str")
if __name__ == '__main__':
import unittest
unittest.main()