Mercurial > p > roundup > code
changeset 6909:86cde9cae7e1
Improve test coverage of backends/indexer_common::get_indexer() method
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 03 Sep 2022 21:33:12 -0400 |
| parents | 3260926d7e7e |
| children | 1f9291fbb835 |
| files | test/test_indexer.py |
| diffstat | 1 files changed, 51 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- a/test/test_indexer.py Sat Sep 03 17:58:41 2022 -0400 +++ b/test/test_indexer.py Sat Sep 03 21:33:12 2022 -0400 @@ -23,6 +23,7 @@ import pytest from roundup.backends import get_backend, have_backend from roundup.backends.indexer_rdbms import Indexer +from roundup.backends.indexer_common import get_indexer from roundup.cgi.exceptions import IndexerQueryError @@ -31,6 +32,7 @@ from .test_postgresql import postgresqlOpener, skip_postgresql from .test_mysql import mysqlOpener, skip_mysql from .test_sqlite import sqliteOpener +from .test_anydbm import anydbmOpener try: import xapian @@ -59,8 +61,16 @@ config[('main', 'indexer_stopwords')] = [] config[('main', 'indexer_language')] = "english" -class IndexerTest(unittest.TestCase): +class IndexerTest(anydbmOpener, unittest.TestCase): + + indexer_name = "native" + def setUp(self): + # remove previous test, ignore errors + if os.path.exists(config.DATABASE): + shutil.rmtree(config.DATABASE) + self.db = self.module.Database(config, 'admin') + if os.path.exists('test-index'): shutil.rmtree('test-index') os.mkdir('test-index') @@ -104,6 +114,24 @@ self.dex.add_text(('test', '1', 'foo'), '') self.assertSeqEqual(self.dex.find(['world']), [('test', '2', 'foo')]) + def test_get_indexer(self): + def class_name_of(object): + """ take and object and return just the class name. + So in: + + return the class name before "at". + + """ + return(str(object).split()[0]) + + old_indexer = self.db.config['INDEXER'] + self.db.config['INDEXER'] = self.indexer_name + + self.assertEqual(class_name_of(self.dex), + class_name_of(get_indexer(self.db.config, self.db))) + + self.db.config['INDEXER'] = old_indexer + def test_stopwords(self): """Test that we can find a text with a stopword in it.""" stopword = "with" @@ -181,28 +209,42 @@ def tearDown(self): shutil.rmtree('test-index') + if hasattr(self, 'db'): + self.db.close() + if os.path.exists(config.DATABASE): + shutil.rmtree(config.DATABASE) @skip_whoosh class WhooshIndexerTest(IndexerTest): + + indexer_name = "whoosh" + def setUp(self): + IndexerTest.setUp(self) + if os.path.exists('test-index'): shutil.rmtree('test-index') os.mkdir('test-index') from roundup.backends.indexer_whoosh import Indexer self.dex = Indexer(db) def tearDown(self): - shutil.rmtree('test-index') + IndexerTest.tearDown(self) @skip_xapian class XapianIndexerTest(IndexerTest): + + indexer_name = "xapian" + def setUp(self): + IndexerTest.setUp(self) + if os.path.exists('test-index'): shutil.rmtree('test-index') os.mkdir('test-index') from roundup.backends.indexer_xapian import Indexer self.dex = Indexer(db) def tearDown(self): - shutil.rmtree('test-index') + IndexerTest.tearDown(self) class RDBMSIndexerTest(object): def setUp(self): @@ -230,6 +272,9 @@ @skip_postgresql class postgresqlFtsIndexerTest(postgresqlOpener, RDBMSIndexerTest, IndexerTest): + + indexer_name = "native-fts" + def setUp(self): postgresqlOpener.setUp(self) RDBMSIndexerTest.setUp(self) @@ -241,27 +286,6 @@ RDBMSIndexerTest.tearDown(self) postgresqlOpener.tearDown(self) - def test_get_indexer(self): - def class_name_of(object): - """ take and object and return just the class name. - So in: - - return the class name before "at". - - """ - return(str(object).split()[0]) - - from roundup.backends.indexer_common import get_indexer - old_indexer = self.db.config['INDEXER'] - self.db.config['INDEXER'] = 'native-fts' - - get_indexer(self.db.config, self.db) - - self.assertEqual(class_name_of(self.dex), - class_name_of(get_indexer(self.db.config, self.db))) - - self.db.config['INDEXER'] = old_indexer - def test_websearch_syntax(self): """Test searches using websearch_to_tsquery. These never throw errors regardless of how wacky the input. @@ -471,33 +495,15 @@ pass class sqliteFtsIndexerTest(sqliteOpener, RDBMSIndexerTest, IndexerTest): + + indexer_name = "native-fts" + def setUp(self): RDBMSIndexerTest.setUp(self) from roundup.backends.indexer_sqlite_fts import Indexer self.dex = Indexer(self.db) self.dex.db = self.db - def test_get_indexer(self): - def class_name_of(object): - """ take and object and return just the class name. - So in: - - return the class name before "at". - - """ - return(str(object).split()[0]) - - from roundup.backends.indexer_common import get_indexer - old_indexer = 'native-fts' - self.db.config['INDEXER'] = 'native-fts' - - get_indexer(self.db.config, self.db) - - self.assertEqual(class_name_of(self.dex), - class_name_of(get_indexer(self.db.config, self.db))) - - self.db.config['INDEXER'] = old_indexer - def test_phrase_and_near(self): self.dex.add_text(('test', '1', 'foo'), 'a the hello world') self.dex.add_text(('test', '2', 'foo'), 'helh blah blah the world')
