class TestRepositoryBasic(TestCase):
    """ Very basic tests """

    def _repositoryExists(self):
        try:
            self.rep.open()
            self.fail()
        except DBNoSuchFileError:
            pass
        except RepositoryOpenDeniedError:
            pass
        except RepositoryVersionError:
            pass

    def setUp(self):
        self.rootdir = '.'
        self.testdir = os.path.join(self.rootdir, 'tests')
        self.rep = DBRepository(os.path.join(self.testdir, '__repository__'))

    def testNonExistent(self):
        """ The repository should not exist at this point """
        self.assert_(not self._repositoryExists())

    def testCreate(self):
        """ Create a repository and make sure it is open """

        self.rep.create()
        self.view = view = self.rep.createView()
        self.assert_(self.view.check())
        self.assert_(self.rep.isOpen())

    def testDestroy(self):
        """ Create and then delete a repository, verify it doesn't exist """
        self.rep.create()
        self.rep.close()
        self.rep.delete()
        self.assert_(not self._repositoryExists())

    def testLoadPack(self):
        """ Minimal test to ensure that we can load packs
        """
        self.rep.create()
        view = self.rep.createView()
        self.assert_(view.check())
    
    def tearDown(self):
        self.rep.close()
        self.rep.delete()
Beispiel #2
0
def makeUncompressedBackup(options, masterPassword=False):
    """Create a backup directory, return the path to the backup.

    Falls back to using the repository directory if backup fails.
    """
    from chandlerdb.persistence.DBRepository import DBRepository

    repoDir = locateRepositoryDirectory(options.profileDir, options)
    try:
        repository = DBRepository(repoDir)
        # use logged=True to prevent repo from setting up stderr logging
        repository.open(recover=True, exclusive=False, logged=True)
        view = repository.createView()
        if masterPassword:
            try:
                MasterPassword.beforeBackup(view, self)
            except:
                wx.MessageBox(_(u'Failed to encrypt passwords.'),
                              _(u'Password Protection Failed'),
                              parent=self)

        repoDir = repository.backup(os.path.join(options.profileDir,
                                                 '__repository__.backup'))
        repository.close()
    except:
        # if repoDir is unchanged, the original is taken instead
        pass

    if isinstance(repoDir, unicode):
        repoDir = repoDir.encode(sys.getfilesystemencoding())

    return repoDir
Beispiel #3
0
def makeUncompressedBackup(options, masterPassword=False):
    """Create a backup directory, return the path to the backup.

    Falls back to using the repository directory if backup fails.
    """
    from chandlerdb.persistence.DBRepository import DBRepository

    repoDir = locateRepositoryDirectory(options.profileDir, options)
    try:
        repository = DBRepository(repoDir)
        # use logged=True to prevent repo from setting up stderr logging
        repository.open(recover=True, exclusive=False, logged=True)
        view = repository.createView()
        if masterPassword:
            try:
                MasterPassword.beforeBackup(view, self)
            except:
                wx.MessageBox(_(u'Failed to encrypt passwords.'),
                              _(u'Password Protection Failed'),
                              parent=self)

        repoDir = repository.backup(
            os.path.join(options.profileDir, '__repository__.backup'))
        repository.close()
    except:
        # if repoDir is unchanged, the original is taken instead
        pass

    if isinstance(repoDir, unicode):
        repoDir = repoDir.encode(sys.getfilesystemencoding())

    return repoDir
class TestRepositoryBasic(TestCase):
    """ Very basic tests """
    def _repositoryExists(self):
        try:
            self.rep.open()
            self.fail()
        except DBNoSuchFileError:
            pass
        except RepositoryOpenDeniedError:
            pass
        except RepositoryVersionError:
            pass

    def setUp(self):
        self.rootdir = '.'
        self.testdir = os.path.join(self.rootdir, 'tests')
        self.rep = DBRepository(os.path.join(self.testdir, '__repository__'))

    def testNonExistent(self):
        """ The repository should not exist at this point """
        self.assert_(not self._repositoryExists())

    def testCreate(self):
        """ Create a repository and make sure it is open """

        self.rep.create()
        self.view = view = self.rep.createView()
        self.assert_(self.view.check())
        self.assert_(self.rep.isOpen())

    def testDestroy(self):
        """ Create and then delete a repository, verify it doesn't exist """
        self.rep.create()
        self.rep.close()
        self.rep.delete()
        self.assert_(not self._repositoryExists())

    def testLoadPack(self):
        """ Minimal test to ensure that we can load packs
        """
        self.rep.create()
        view = self.rep.createView()
        self.assert_(view.check())

    def tearDown(self):
        self.rep.close()
        self.rep.delete()
Beispiel #5
0
    def setUp(self):
        self.chandlerDir = os.environ['CHANDLERHOME']
        self.repoDir = os.path.join(self.chandlerDir, '__repository__')

        rep = DBRepository(self.repoDir)
        rep.create(create=True, refcounted=True, ramdb=True)
        view = rep.createView()

        if view.getRoot("Schema") is None:
            view.loadPack('packs/schema.pack', package='chandlerdb')
            view.loadPack(os.path.join(self.chandlerDir, 'repository', 'packs', 'chandler.pack'))
        self.view = view
        self.trash = schema.ns('osaf.pim', view).trashCollection
    def setUp(self):
        self.chandlerDir = os.environ['CHANDLERHOME']
        self.repoDir = os.path.join(self.chandlerDir, '__repository__')

        rep = DBRepository(self.repoDir)
        rep.create(create=True, refcounted=True, ramdb=True)
        view = rep.createView()

        if view.getRoot("Schema") is None:
            view.loadPack('packs/schema.pack', package='chandlerdb')
            view.loadPack(
                os.path.join(self.chandlerDir, 'repository', 'packs',
                             'chandler.pack'))
        self.view = view
        self.trash = schema.ns('osaf.pim', view).trashCollection
Beispiel #7
0
class RepositoryTestCase(TestCase):

    logLevel = logging.WARNING  # a nice quiet default

    def _openRepository(self, ramdb=True):

        self.rep = DBRepository(os.path.join(self.testdir, "__repository__"))

        self.rep.create(ramdb=self.ramdb, refcounted=True)
        self.rep.logger.setLevel(self.logLevel)

        self.view = view = self.rep.createView("Test")
        view.commit()

    def setUp(self, ramdb=True, testdir="tests"):

        self.ramdb = ramdb
        self.testdir = testdir
        self._openRepository(ramdb)

    def tearDown(self):
        self.rep.close()
        self.rep.logger.debug("RAMDB = %s", self.ramdb)
        if not self.ramdb:
            self.rep.delete()

    def _reopenRepository(self):
        view = self.view
        view.commit()

        if self.ramdb:
            view.closeView()
            view.openView()
        else:
            dbHome = self.rep.dbHome
            self.rep.close()
            self.rep = DBRepository(dbHome)
            self.rep.open()
            self.view = view = self.rep.createView("Test")

    def loadCineguide(self, view, commit=True):

        view.loadPack("data/packs/cineguide.pack", package="tests")
        if commit:
            view.commit()

    def loadCollections(self, view, commit=True):

        view.loadPack("data/packs/collections.pack", package="tests")
        if commit:
            view.commit()

    _KIND_KIND = Path("//Schema/Core/Kind")
    _ITEM_KIND = Path("//Schema/Core/Item")

    # Repository specific assertions
    def assertIsRoot(self, item):
        self.assert_(item in list(item.itsView.iterRoots()))

    def assertItemPathEqual(self, item, string):
        self.assertEqual(str(item.itsPath), string)

    def setLoggerLevel(self, level):
        current = self.rep.logger.level
        self.rep.logger.setLevel(level)
        return current
class RepositoryTestCase(TestCase):

    logLevel = logging.WARNING  # a nice quiet default

    def _openRepository(self, ramdb=True):

        self.rep = DBRepository(os.path.join(self.testdir, '__repository__'))

        self.rep.create(ramdb=self.ramdb, refcounted=True)
        self.rep.logger.setLevel(self.logLevel)

        self.view = view = self.rep.createView("Test")
        view.commit()

    def setUp(self, ramdb=True, testdir='tests'):

        self.ramdb = ramdb
        self.testdir = testdir
        self._openRepository(ramdb)

    def tearDown(self):
        self.rep.close()
        self.rep.logger.debug('RAMDB = %s', self.ramdb)
        if not self.ramdb:
            self.rep.delete()

    def _reopenRepository(self):
        view = self.view
        view.commit()

        if self.ramdb:
            view.closeView()
            view.openView()
        else:
            dbHome = self.rep.dbHome
            self.rep.close()
            self.rep = DBRepository(dbHome)
            self.rep.open()
            self.view = view = self.rep.createView("Test")

    def loadCineguide(self, view, commit=True):

        view.loadPack('data/packs/cineguide.pack', package='tests')
        if commit:
            view.commit()

    def loadCollections(self, view, commit=True):

        view.loadPack('data/packs/collections.pack', package='tests')
        if commit:
            view.commit()

    _KIND_KIND = Path("//Schema/Core/Kind")
    _ITEM_KIND = Path("//Schema/Core/Item")

    # Repository specific assertions
    def assertIsRoot(self, item):
        self.assert_(item in list(item.itsView.iterRoots()))

    def assertItemPathEqual(self, item, string):
        self.assertEqual(str(item.itsPath), string)

    def setLoggerLevel(self, level):
        current = self.rep.logger.level
        self.rep.logger.setLevel(level)
        return current