def setUp(self): # SchoolTool needs to bootstrap the database first, before the Zope 3 # IDatabaseOpenedEvent gets a chance to create its own root folder and # stuff. Unfortunatelly, we cannot install a IDatabaseOpenedEvent # subscriber via ftesting.zcml and ensure it will get called first. # Instead we place our own subscriber directly into zope.event.subscribers, # where it gets a chance to intercept IDatabaseOpenedEvent before the # Zope 3 event dispatcher sees it. def install_db_bootstrap_hook(): """Install schooltool_db_setup into zope.event.subscribers.""" zope.event.subscribers.insert(0, schooltool_db_setup) def uninstall_db_bootstrap_hook(): """Remove schooltool_db_setup from zope.event.subscribers.""" zope.event.subscribers.remove(schooltool_db_setup) def schooltool_db_setup(event): """IDatabaseOpenedEvent handler that bootstraps SchoolTool.""" if IDatabaseOpenedEvent.providedBy(event): import schooltool.app.main server = schooltool.app.main.SchoolToolServer() server.initializePreferences = lambda app: None server.bootstrapSchoolTool(event.database) server.startApplication(event.database) install_db_bootstrap_hook() try: _ZCMLLayer.setUp(self) finally: uninstall_db_bootstrap_hook()
def setUp(self): """ Prevent zope.sendmail to start its thread during tests, or this will confuse the coverage analyzer""" from zope.sendmail import zcml zcml.queuedDelivery = lambda *args, **kwargs :None ZCMLLayer.setUp(self)
def setUp(self): _ZCMLLayer.setUp(self) for name, utility in getUtilitiesFor(IDatabase): utility.setMappers()