def _index(self, realm, clean): fts = FullTextSearch(self.env) realms = realm and [realm] or fts.index_realms if clean: printout(_("Wiping search index and re-indexing all items in " "realms: %(realms)s", realms=fts._fmt_realms(realms))) else: printout(_("Indexing new and changed items in realms: %(realms)s", realms=fts._fmt_realms(realms))) fts.index(realms, clean, self._index_feedback, self._clean_feedback) printout(_("Indexing finished"))
def _index(self, realm, clean): fts = FullTextSearch(self.env) realms = realm and [realm] or fts.index_realms if clean: printout( _( "Wiping search index and re-indexing all items in " "realms: %(realms)s", realms=fts._fmt_realms(realms))) else: printout( _("Indexing new and changed items in realms: %(realms)s", realms=fts._fmt_realms(realms))) fts.index(realms, clean, self._index_feedback, self._clean_feedback) printout(_("Indexing finished"))
class ChangesetsSvnTestCase(unittest.TestCase): @classmethod def setupClass(cls): svn_fs._import_svn() core.apr_initialize() pool = core.svn_pool_create(None) dumpstream = None cls.repos_path = tempfile.mkdtemp(prefix='svn-tmp') shutil.rmtree(cls.repos_path) dumpfile = open(os.path.join(os.path.split(__file__)[0], 'svn.dump')) try: r = repos.svn_repos_create(cls.repos_path, '', '', None, None, pool) if hasattr(repos, 'svn_repos_load_fs2'): repos.svn_repos_load_fs2(r, dumpfile, StringIO(), repos.svn_repos_load_uuid_default, '', 0, 0, None, pool) else: dumpstream = core.svn_stream_from_aprfile(dumpfile, pool) repos.svn_repos_load_fs(r, dumpstream, None, repos.svn_repos_load_uuid_default, '', None, None, pool) finally: if dumpstream: core.svn_stream_close(dumpstream) core.svn_pool_destroy(pool) core.apr_terminate() @classmethod def teardownClass(cls): if os.name == 'nt': # The Windows version of 'shutil.rmtree' doesn't override the # permissions of read-only files, so we have to do it ourselves: import stat format_file = os.path.join(cls.repos_path, 'db', 'format') if os.path.isfile(format_file): os.chmod(format_file, stat.S_IRWXU) os.chmod(os.path.join(cls.repos_path, 'format'), stat.S_IRWXU) shutil.rmtree(cls.repos_path) def setUp(self): self.env = EnvironmentStub(enable=['trac.*', FullTextSearch]) DbRepositoryProvider(self.env).add_repository('', self.repos_path, 'svn') self.repos = self.env.get_repository('') self.repos.sync() self.fts = FullTextSearch(self.env) self.fts.backend = Backend(self.fts.solr_endpoint, self.env.log, MockSolrInterface) def tearDown(self): self.env.reset_db() self.repos.close() self.repos = None def _get_so(self, i=-1): si = self.fts.backend.si_class(self.fts.backend.solr_endpoint) return si.hist[i][2] def _feedback(self, realm, resource): pass def _finish_fb(self, realm, resource): pass def test_reindex_changeset(self): self.assertEquals({'changeset': self.repos.youngest_rev}, self.fts.index(['changeset'], True, self._feedback, self._finish_fb)) def test_add_changeset(self): sw = SubversionWriter(self.env, self.repos, 'kalle') new_rev = sw.put_content('/trunk/foo.txt', content='Foo Bar', commit_msg='A comment') RepositoryManager(self.env).notify('changeset_added', '', [new_rev]) # Node so = self._get_so() self.assertEquals('trac:source:trunk/foo.txt', so.doc_id) self.assertEquals('source', so.realm) self.assertEquals('trunk/foo.txt', so.id) self.assertEquals('trunk/foo.txt', so.title) self.assertEquals('kalle', so.author) self.assertEquals('Foo Bar', so.body.read()) self.assertTrue('A comment' in so.comments) # Changeset so = self._get_so(-2) self.assertEquals('trac:changeset:%i' % new_rev, so.doc_id) self.assertEquals('changeset', so.realm) self.assertEquals('%i' % new_rev, so.id) self.assertTrue(so.title.startswith('[%i]: A comment' % new_rev)) self.assertEquals('kalle', so.author) self.assertEquals('A comment', so.body)
class ChangesetsSvnTestCase(unittest.TestCase): @classmethod def setupClass(cls): svn_fs._import_svn() core.apr_initialize() pool = core.svn_pool_create(None) dumpstream = None cls.repos_path = tempfile.mkdtemp(prefix='svn-tmp') shutil.rmtree(cls.repos_path) dumpfile = open(os.path.join(os.path.split(__file__)[0], 'svn.dump')) try: r = repos.svn_repos_create(cls.repos_path, '', '', None, None, pool) if hasattr(repos, 'svn_repos_load_fs2'): repos.svn_repos_load_fs2(r, dumpfile, StringIO(), repos.svn_repos_load_uuid_default, '', 0, 0, None, pool) else: dumpstream = core.svn_stream_from_aprfile(dumpfile, pool) repos.svn_repos_load_fs(r, dumpstream, None, repos.svn_repos_load_uuid_default, '', None, None, pool) finally: if dumpstream: core.svn_stream_close(dumpstream) core.svn_pool_destroy(pool) core.apr_terminate() @classmethod def teardownClass(cls): if os.name == 'nt': # The Windows version of 'shutil.rmtree' doesn't override the # permissions of read-only files, so we have to do it ourselves: import stat format_file = os.path.join(cls.repos_path, 'db', 'format') if os.path.isfile(format_file): os.chmod(format_file, stat.S_IRWXU) os.chmod(os.path.join(cls.repos_path, 'format'), stat.S_IRWXU) shutil.rmtree(cls.repos_path) def setUp(self): self.env = EnvironmentStub(enable=['trac.*', FullTextSearch]) DbRepositoryProvider(self.env).add_repository('', self.repos_path, 'svn') self.repos = self.env.get_repository('') self.repos.sync() self.fts = FullTextSearch(self.env) self.fts.backend = Backend(self.fts.solr_endpoint, self.env.log, MockSolrInterface) def tearDown(self): self.env.reset_db() self.repos.close() self.repos = None def _get_so(self, i=-1): si = self.fts.backend.si_class(self.fts.backend.solr_endpoint) return si.hist[i][2] def _feedback(self, realm, resource): pass def _finish_fb(self, realm, resource): pass def test_reindex_changeset(self): self.assertEquals({'changeset': self.repos.youngest_rev}, self.fts.index(['changeset'], True, self._feedback, self._finish_fb)) def test_add_changeset(self): sw = SubversionWriter(self.env, self.repos, 'kalle') new_rev = sw.put_content('/trunk/foo.txt', content='Foo Bar', commit_msg='A comment') RepositoryManager(self.env).notify('changeset_added', '', [new_rev]) # Node so = self._get_so() self.assertEquals('trac:source:trunk/foo.txt', so.doc_id) self.assertEquals('source', so.realm) self.assertEquals('trunk/foo.txt', so.id) self.assertEquals('trunk/foo.txt', so.title) self.assertEquals('kalle', so.author) self.assertEquals('Foo Bar', so.body.read()) self.assertTrue('A comment' in so.comments) # Changeset so = self._get_so(-2) self.assertEquals('trac:changeset:%i' % new_rev, so.doc_id) self.assertEquals('changeset', so.realm) self.assertEquals('%i' % new_rev, so.id) self.assertTrue(so.title.startswith('[%i]: A comment' % new_rev)) self.assertEquals('kalle', so.author) self.assertEquals('A comment', so.body)