def test_install_with_problem(self): "bauble.pluginmgr.init() using plugin which can't install" db.open(uri, verify=False) db.create(False) bauble.pluginmgr.plugins[FailingInstallPlugin.__name__] = FailingInstallPlugin() bauble.pluginmgr.plugins[DependsOnFailingInstallPlugin.__name__] = DependsOnFailingInstallPlugin() self.assertRaises(BaubleError, bauble.pluginmgr.init, force=True)
def test_install_with_problem(self): "bauble.pluginmgr.init() using plugin which can't install" db.open(uri, verify=False) db.create(False) bauble.pluginmgr.plugins[ FailingInstallPlugin.__name__] = FailingInstallPlugin() bauble.pluginmgr.plugins[DependsOnFailingInstallPlugin. __name__] = DependsOnFailingInstallPlugin() self.assertRaises(BaubleError, bauble.pluginmgr.init, force=True)
def test_init(self): """ Test bauble.pluginmgr.init() """ db.open(uri, verify=False) db.create(False) bauble.pluginmgr.plugins[C.__name__] = C bauble.pluginmgr.plugins[B.__name__] = B bauble.pluginmgr.plugins[A.__name__] = A bauble.pluginmgr.init(force=True) self.assert_(A.initialized and B.initialized and C.initialized)
def test_successfulinit(self): "bauble.pluginmgr.init() should be successful" db.open(uri, verify=False) db.create(False) bauble.pluginmgr.plugins[C.__name__] = C() bauble.pluginmgr.plugins[B.__name__] = B() bauble.pluginmgr.plugins[A.__name__] = A() bauble.pluginmgr.init(force=True) self.assertTrue(A.initialized) self.assertTrue(B.initialized) self.assertTrue(C.initialized)
def test_dependencies_CA(self): "test that loading C will also load A" pA = A() pB = B() pC = C() bauble.pluginmgr.plugins[B.__name__] = pB bauble.pluginmgr.plugins[A.__name__] = pA bauble.pluginmgr.plugins[C.__name__] = pC db.open(uri, verify=False) db.create(False) ## should try to load the A plugin self.assertRaises(KeyError, bauble.pluginmgr.install, (pC, ), force=True)
def test_install(self): """ Test bauble.pluginmgr.install() """ pA = A() pB = B() pC = C() bauble.pluginmgr.plugins[C.__name__] = pC bauble.pluginmgr.plugins[B.__name__] = pB bauble.pluginmgr.plugins[A.__name__] = pA db.open(uri, verify=False) db.create(False) bauble.pluginmgr.install((pA, pB, pC), force=True) self.assert_(A.installed and B.installed and C.installed)
def test_init_with_problem(self): "bauble.pluginmgr.init() using plugin which can't initialize" old_dialog = utils.message_details_dialog self.invoked = False def fake_dialog(a,b,c): "trap dialog box invocation" self.invoked = True utils.message_details_dialog = fake_dialog db.open(uri, verify=False) db.create(False) bauble.pluginmgr.plugins[FailingInitPlugin.__name__] = FailingInitPlugin() bauble.pluginmgr.plugins[DependsOnFailingInitPlugin.__name__] = DependsOnFailingInitPlugin() bauble.pluginmgr.init(force=True) self.assertTrue(self.invoked) # self.assertFalse(FailingInitPlugin.initialized) # irrelevant self.assertFalse(DependsOnFailingInitPlugin.initialized) utils.message_details_dialog = old_dialog
def on_file_menu_new(self, widget, data=None): msg = "If a database already exists at this connection then creating "\ "a new database could destroy your data.\n\n<i>Are you sure "\ "this is what you want to do?</i>" if not utils.yes_no_dialog(msg, yes_delay=2): return #if gui is not None and hasattr(gui, 'insert_menu'): submenu = self.insert_menu.get_submenu() for c in submenu.get_children(): submenu.remove(c) self.insert_menu.show() try: db.create() pluginmgr.init() except Exception, e: msg = _('Could not create a new database.\n\n%s') % \ utils.xml_safe(e) tb = utils.xml_safe(traceback.format_exc()) utils.message_details_dialog(msg, tb, gtk.MESSAGE_ERROR) return
def test_init_with_problem(self): "bauble.pluginmgr.init() using plugin which can't initialize" old_dialog = utils.message_details_dialog self.invoked = False def fake_dialog(a, b, c): "trap dialog box invocation" self.invoked = True utils.message_details_dialog = fake_dialog db.open(uri, verify=False) db.create(False) bauble.pluginmgr.plugins[ FailingInitPlugin.__name__] = FailingInitPlugin() bauble.pluginmgr.plugins[DependsOnFailingInitPlugin. __name__] = DependsOnFailingInitPlugin() bauble.pluginmgr.init(force=True) self.assertTrue(self.invoked) # self.assertFalse(FailingInitPlugin.initialized) # irrelevant self.assertFalse(DependsOnFailingInitPlugin.initialized) utils.message_details_dialog = old_dialog
def _post_loop(): gtk.gdk.threads_enter() try: if isinstance(open_exc, err.DatabaseError): msg = _('Would you like to create a new Bauble database at ' \ 'the current connection?\n\n<i>Warning: If there is '\ 'already a database at this connection any existing '\ 'data will be destroyed!</i>') if utils.yes_no_dialog(msg, yes_delay=2): try: db.create() # db.create() creates all tables registered with # the default metadata so the pluginmgr should be # loaded after the database is created so we don't # inadvertantly create tables from the plugins pluginmgr.init() # set the default connection prefs[conn_default_pref] = conn_name except Exception, e: utils.message_details_dialog(utils.xml_safe_utf8(e), traceback.format_exc(), gtk.MESSAGE_ERROR) error(e) else:
def _post_loop(): gtk.gdk.threads_enter() try: if isinstance(open_exc, err.DatabaseError): msg = _('Would you like to create a new Bauble database at ' 'the current connection?\n\n<i>Warning: If there is ' 'already a database at this connection any existing ' 'data will be destroyed!</i>') if utils.yes_no_dialog(msg, yes_delay=2): try: db.create() # db.create() creates all tables registered with # the default metadata so the pluginmgr should be # loaded after the database is created so we don't # inadvertantly create tables from the plugins pluginmgr.init() # set the default connection prefs[conn_default_pref] = conn_name except Exception, e: utils.message_details_dialog(utils.xml_safe(e), traceback.format_exc(), gtk.MESSAGE_ERROR) logger.error("%s(%s)" % (type(e), e)) else:
import sqlalchemy as sa from sqlalchemy.orm import * from sqlalchemy.orm.mapper import _mapper_registry from sqlalchemy.orm.properties import * import bauble import bauble.db as db import bauble.pluginmgr as pluginmgr from bauble.prefs import prefs import bauble.view as view uri = 'sqlite:///:memory:' db.open(uri, verify=False) prefs.init() pluginmgr.load() db.create(False) pluginmgr.init(True) def column_type_str(col): print type(col) if isinstance(col, sa.String): return 'string' elif isinstance(col, sa.Unicode): return 'unicode' elif isinstance(col, sa.Integer): return 'integer' elif isinstance(col, sa.ForeignKey): return 'foreign key(int)'
## for sake of testing, just use sqlite3. uri = 'sqlite:///:memory:' def init_bauble(uri, create=False): try: db.open(uri, verify=False) except Exception, e: print >>sys.stderr, e #debug e if not bauble.db.engine: raise BaubleError('not connected to a database') prefs.init() prefs.testing = True pluginmgr.load() db.create(create) pluginmgr.init(force=True) def update_gui(): """ Flush any GTK Events. Used for doing GUI testing. """ import gtk while gtk.events_pending(): gtk.main_iteration(block=False) def check_dupids(filename): """ Return a list of duplicate ids in a glade file
## for sake of testing, just use sqlite3. uri = 'sqlite:///:memory:' def init_bauble(uri, create=False): try: db.open(uri, verify=False) except Exception, e: print >> sys.stderr, e #debug e if not bauble.db.engine: raise BaubleError('not connected to a database') prefs.init() pluginmgr.load() db.create(create) pluginmgr.init(force=True) def update_gui(): """ Flush any GTK Events. Used for doing GUI testing. """ import gtk while gtk.events_pending(): gtk.main_iteration(block=False) def check_dupids(filename): """ Return a list of duplicate ids in a glade file
import sqlalchemy as sa from sqlalchemy.orm import * from sqlalchemy.orm.mapper import _mapper_registry from sqlalchemy.orm.properties import * import bauble import bauble.db as db import bauble.pluginmgr as pluginmgr from bauble.prefs import prefs import bauble.view as view uri = 'sqlite:///:memory:' db.open(uri, verify=False) prefs.init() pluginmgr.load() db.create(False) pluginmgr.init(True) def column_type_str(col): print type(col) if isinstance(col, sa.String): return 'string' elif isinstance(col, sa.Unicode): return 'unicode' elif isinstance(col, sa.Integer): return 'integer' elif isinstance(col, sa.ForeignKey): return 'foreign key(int)' html_head = '''<html><head>