mockreactor.py 896 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # Copyright (c) Twisted Matrix Laboratories.
  2. # See LICENSE for details.
  3. """
  4. Mock reactor.
  5. """
  6. from twisted.internet import error
  7. from twisted.test.proto_helpers import MemoryReactor as BaseReactor
  8. class MockReactor(BaseReactor):
  9. """
  10. Mock reactor.
  11. """
  12. def __init__(self, testCase):
  13. BaseReactor.__init__(self)
  14. self.testCase = testCase
  15. def install(self):
  16. """
  17. Mock installation of L{MockReactor}.
  18. """
  19. if self.hasInstalled:
  20. raise error.ReactorAlreadyInstalledError(
  21. "reactor already installed"
  22. )
  23. BaseReactor.install(self)
  24. import sys
  25. import twisted.internet
  26. modules = sys.modules.copy()
  27. modules["twisted.internet.reactor"] = self
  28. self.testCase.patch(sys, "modules", self)
  29. self.testCase.patch(twisted.internet, "reactor", self)