Viewing file: modulehelpers.py (1.63 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details.
""" Testing helpers related to the module system. """
__all__ = ["NoReactor", "AlternateReactor"]
import sys
import twisted.internet from twisted.test.test_twisted import SetAsideModule
class NoReactor(SetAsideModule): """ Context manager that uninstalls the reactor, if any, and then restores it afterwards. """
def __init__(self): SetAsideModule.__init__(self, "twisted.internet.reactor")
def __enter__(self): SetAsideModule.__enter__(self) if "twisted.internet.reactor" in self.modules: del twisted.internet.reactor
def __exit__(self, excType, excValue, traceback): SetAsideModule.__exit__(self, excType, excValue, traceback) # Clean up 'reactor' attribute that may have been set on # twisted.internet: reactor = self.modules.get("twisted.internet.reactor", None) if reactor is not None: twisted.internet.reactor = reactor else: try: del twisted.internet.reactor except AttributeError: pass
class AlternateReactor(NoReactor): """ A context manager which temporarily installs a different object as the global reactor. """
def __init__(self, reactor): """ @param reactor: Any object to install as the global reactor. """ NoReactor.__init__(self) self.alternate = reactor
def __enter__(self): NoReactor.__enter__(self) twisted.internet.reactor = self.alternate sys.modules["twisted.internet.reactor"] = self.alternate
|