fail_slp_switch.py 524 B

1234567891011121314151617181920212223242526272829
  1. # -*- coding: utf-8 -*-
  2. """
  3. A test helper for seeing what happens when slp_switch()
  4. fails.
  5. """
  6. # pragma: no cover
  7. import greenlet
  8. print('fail_slp_switch is running', flush=True)
  9. runs = []
  10. def func():
  11. runs.append(1)
  12. greenlet.getcurrent().parent.switch()
  13. runs.append(2)
  14. greenlet.getcurrent().parent.switch()
  15. runs.append(3)
  16. g = greenlet._greenlet.UnswitchableGreenlet(func)
  17. g.switch()
  18. assert runs == [1]
  19. g.switch()
  20. assert runs == [1, 2]
  21. g.force_slp_switch_error = True
  22. # This should crash.
  23. g.switch()