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)
示例#2
0
    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)
示例#4
0
    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_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)
示例#7
0
    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)
示例#9
0
    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)
示例#10
0
    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
示例#11
0
    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
示例#12
0
    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
示例#13
0
    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:
示例#15
0
 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:
示例#16
0
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)'

示例#17
0
## 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
示例#18
0
## 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
示例#19
0
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>