def __init__(self, config_file=None): """Initializes Zope 3 framework. Creates a volatile memory storage. Parses Zope3 configuration files. """ self.__dict__ = self.__shared_state if not self._init: # Make sure unit tests are cleaned up zope.app.testing.setup.placefulSetUp() zope.app.testing.setup.placefulTearDown() if not config_file: config_file = 'ftesting.zcml' self.log = StringIO() # Make it silent but keep the log available for debugging logging.root.addHandler(logging.StreamHandler(self.log)) self.base_storage = DemoStorage("Memory Storage") self.db = DB(self.base_storage) self.app = Debugger(self.db, config_file) self.connection = None self._config_file = config_file self._init = True # Make a local grant for the test user setup = component.queryUtility(IManagerSetup) if setup is not None: setup.setUpManager() FunctionalTestSetup().connection = None elif config_file and config_file != self._config_file: # Running different tests with different configurations is not # supported at the moment raise NotImplementedError('Already configured' ' with a different config file')
def __init__(self, config_file=None, database_names=None, product_config=None): """Initializes Zope 3 framework. Creates a volatile memory storage. Parses Zope3 configuration files. """ self.__dict__ = self.__shared_state if database_names is not None: database_names = tuple(database_names) if not self._init: # Make sure unit tests are cleaned up zope.app.testing.setup.placefulSetUp() zope.app.testing.setup.placefulTearDown() if not config_file: config_file = 'ftesting.zcml' if database_names is None: database_names = ('unnamed',) self.log = StringIO() # Make it silent but keep the log available for debugging logging.root.addHandler(logging.StreamHandler(self.log)) self.old_product_config = copy.deepcopy( zope.app.appsetup.product.saveConfiguration()) configs = [] if product_config: configs = zope.app.appsetup.product.loadConfiguration( StringIO(product_config)) configs = [ zope.app.appsetup.product.FauxConfiguration(name, values) for name, values in configs.items() ] self.local_product_config = configs zope.app.appsetup.product.setProductConfigurations(configs) self._base_storages = {} self.db = multi_database( BaseDatabaseFactory(name, self._base_storages) for name in database_names )[0][0] # This handles anything added by generations or other bootstrap # subscribers. commit() self.dbstack = [] self.app = Debugger(self.db, config_file) self.connection = None self._config_file = config_file self._product_config = product_config self._database_names = database_names self._init = True # Make a local grant for the test user setup = component.queryUtility(IManagerSetup) if setup is not None: setup.setUpManager() FunctionalTestSetup().connection = None elif config_file and config_file != self._config_file: # Running different tests with different configurations is not # supported at the moment raise NotImplementedError('Already configured' ' with a different config file') elif product_config and product_config != self._product_config: raise NotImplementedError('Already configured' ' with different product configuration') elif database_names and database_names != self._database_names: # Running different tests with different configurations is not # supported at the moment raise NotImplementedError('Already configured' ' with different database names')