/tests/core/test_errors.py

https://bitbucket.org/prologic/circuits/ · Python · 60 lines · 38 code · 20 blank · 2 comment · 0 complexity · bef688ba8e9f8b72a1f0fe74855e65d1 MD5 · raw file

  1. #!/usr/bin/env python
  2. import pytest
  3. from circuits import Event, Component
  4. class test(Event):
  5. """test Event"""
  6. class App(Component):
  7. def __init__(self):
  8. super(App, self).__init__()
  9. self.etype = None
  10. self.evalue = None
  11. self.etraceback = None
  12. self.handler = None
  13. self.fevent = None
  14. def test(self):
  15. return x # NOQA
  16. def exception(self, etype, evalue, etraceback, handler=None, fevent=None):
  17. self.etype = etype
  18. self.evalue = evalue
  19. self.etraceback = etraceback
  20. self.handler = handler
  21. self.fevent = fevent
  22. def reraise(e):
  23. raise e
  24. @pytest.fixture
  25. def app(request, manager, watcher):
  26. app = App().register(manager)
  27. watcher.wait("registered")
  28. def finalizer():
  29. app.unregister()
  30. request.addfinalizer(finalizer)
  31. return app
  32. def test_main(app, watcher):
  33. e = test()
  34. app.fire(e)
  35. watcher.wait("exception")
  36. assert app.etype == NameError
  37. pytest.raises(NameError, lambda e: reraise(e), app.evalue)
  38. assert isinstance(app.etraceback, list)
  39. assert app.handler == app.test
  40. assert app.fevent == e