Skip to content

Commit 66f5155

Browse files
committed
fix postgresl-fts indexer: get_indexer reported not implemented
When I implemented postgresql fts indexing I forgot to remove code that raised NotImplemented when it was requested. Also had to fix import to match filename. Added tests for native-fts paths in get_indexer.
1 parent 72b6274 commit 66f5155

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

CHANGES.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ Fixed:
3838
catching SSL.ZeroReturnError indicating SSL has been shut down.
3939
- add caching header for text/javascript in addition to depricated
4040
application/javascript. (John Rouillard)
41+
- Enable postgres-fts: fix indexer-common::get_indexer so it returns a
42+
postgresql-fts Test code paths in get_indexer. (John Rouillard)
4143

4244
Features:
4345

roundup/backends/indexer_common.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,7 @@ def get_indexer(config, db):
147147
return Indexer(db)
148148

149149
if db.dbtype == "postgres":
150-
raise NotImplementedError("Postgres FTS not available")
151-
from roundup.backends.indexer_postgres_fts import Indexer
150+
from roundup.backends.indexer_postgresql_fts import Indexer
152151
return Indexer(db)
153152

154153
if indexer_name == "native":

test/test_indexer.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,27 @@ def tearDown(self):
241241
RDBMSIndexerTest.tearDown(self)
242242
postgresqlOpener.tearDown(self)
243243

244+
def test_get_indexer(self):
245+
def class_name_of(object):
246+
""" take and object and return just the class name.
247+
So in:
248+
249+
return the class name before "at".
250+
251+
"""
252+
return(str(object).split()[0])
253+
254+
from roundup.backends.indexer_common import get_indexer
255+
old_indexer = self.db.config['INDEXER']
256+
self.db.config['INDEXER'] = 'native-fts'
257+
258+
get_indexer(self.db.config, self.db)
259+
260+
self.assertEqual(class_name_of(self.dex),
261+
class_name_of(get_indexer(self.db.config, self.db)))
262+
263+
self.db.config['INDEXER'] = old_indexer
264+
244265
def test_websearch_syntax(self):
245266
"""Test searches using websearch_to_tsquery. These never throw
246267
errors regardless of how wacky the input.
@@ -456,6 +477,27 @@ def setUp(self):
456477
self.dex = Indexer(self.db)
457478
self.dex.db = self.db
458479

480+
def test_get_indexer(self):
481+
def class_name_of(object):
482+
""" take and object and return just the class name.
483+
So in:
484+
485+
return the class name before "at".
486+
487+
"""
488+
return(str(object).split()[0])
489+
490+
from roundup.backends.indexer_common import get_indexer
491+
old_indexer = 'native-fts'
492+
self.db.config['INDEXER'] = 'native-fts'
493+
494+
get_indexer(self.db.config, self.db)
495+
496+
self.assertEqual(class_name_of(self.dex),
497+
class_name_of(get_indexer(self.db.config, self.db)))
498+
499+
self.db.config['INDEXER'] = old_indexer
500+
459501
def test_phrase_and_near(self):
460502
self.dex.add_text(('test', '1', 'foo'), 'a the hello world')
461503
self.dex.add_text(('test', '2', 'foo'), 'helh blah blah the world')

0 commit comments

Comments
 (0)