mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-11 13:24:07 +00:00
switch tests to ICU tokenizer as default
This commit is contained in:
@@ -59,5 +59,5 @@ def after_scenario(context, scenario):
|
|||||||
|
|
||||||
def before_tag(context, tag):
|
def before_tag(context, tag):
|
||||||
if tag == 'fail-legacy':
|
if tag == 'fail-legacy':
|
||||||
if context.config.userdata['TOKENIZER'] in (None, 'legacy'):
|
if context.config.userdata['TOKENIZER'] == 'legacy':
|
||||||
context.scenario.skip("Not implemented in legacy tokenizer")
|
context.scenario.skip("Not implemented in legacy tokenizer")
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ class NominatimEnvironment:
|
|||||||
self.run_nominatim('add-data', '--tiger-data', str((testdata / 'tiger').resolve()))
|
self.run_nominatim('add-data', '--tiger-data', str((testdata / 'tiger').resolve()))
|
||||||
self.run_nominatim('freeze')
|
self.run_nominatim('freeze')
|
||||||
|
|
||||||
if self.tokenizer != 'icu':
|
if self.tokenizer == 'legacy':
|
||||||
phrase_file = str((testdata / 'specialphrases_testdb.sql').resolve())
|
phrase_file = str((testdata / 'specialphrases_testdb.sql').resolve())
|
||||||
run_script(['psql', '-d', self.api_test_db, '-f', phrase_file])
|
run_script(['psql', '-d', self.api_test_db, '-f', phrase_file])
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -266,7 +266,7 @@ def check_word_table_for_postcodes(context, exclude, postcodes):
|
|||||||
plist.sort()
|
plist.sort()
|
||||||
|
|
||||||
with context.db.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
|
with context.db.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
|
||||||
if nctx.tokenizer == 'icu':
|
if nctx.tokenizer != 'legacy':
|
||||||
cur.execute("SELECT word FROM word WHERE type = 'P' and word = any(%s)",
|
cur.execute("SELECT word FROM word WHERE type = 'P' and word = any(%s)",
|
||||||
(plist,))
|
(plist,))
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -211,11 +211,6 @@ def osmline_table(temp_db_with_extensions, table_factory):
|
|||||||
country_code VARCHAR(2)""")
|
country_code VARCHAR(2)""")
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
def word_table(temp_db_conn):
|
|
||||||
return mocks.MockWordTable(temp_db_conn)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def sql_preprocessor_cfg(tmp_path, table_factory, temp_db_with_extensions):
|
def sql_preprocessor_cfg(tmp_path, table_factory, temp_db_with_extensions):
|
||||||
table_factory('country_name', 'partition INT', ((0, ), (1, ), (2, )))
|
table_factory('country_name', 'partition INT', ((0, ), (1, ), (2, )))
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import psycopg2.extras
|
|||||||
from nominatim.db import properties
|
from nominatim.db import properties
|
||||||
|
|
||||||
# This must always point to the mock word table for the default tokenizer.
|
# This must always point to the mock word table for the default tokenizer.
|
||||||
from mock_legacy_word_table import MockLegacyWordTable as MockWordTable
|
from mock_icu_word_table import MockIcuWordTable as MockWordTable
|
||||||
|
|
||||||
class MockPlacexTable:
|
class MockPlacexTable:
|
||||||
""" A placex table for testing.
|
""" A placex table for testing.
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ def test_truncate_database_tables(temp_db_conn, temp_db_cursor, table_factory, w
|
|||||||
|
|
||||||
@pytest.mark.parametrize("threads", (1, 5))
|
@pytest.mark.parametrize("threads", (1, 5))
|
||||||
def test_load_data(dsn, place_row, placex_table, osmline_table,
|
def test_load_data(dsn, place_row, placex_table, osmline_table,
|
||||||
word_table, temp_db_cursor, threads):
|
temp_db_cursor, threads):
|
||||||
for func in ('precompute_words', 'getorcreate_housenumber_id', 'make_standard_name'):
|
for func in ('precompute_words', 'getorcreate_housenumber_id', 'make_standard_name'):
|
||||||
temp_db_cursor.execute(f"""CREATE FUNCTION {func} (src TEXT)
|
temp_db_cursor.execute(f"""CREATE FUNCTION {func} (src TEXT)
|
||||||
RETURNS TEXT AS $$ SELECT 'a'::TEXT $$ LANGUAGE SQL
|
RETURNS TEXT AS $$ SELECT 'a'::TEXT $$ LANGUAGE SQL
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ from nominatim.tools import migration
|
|||||||
from nominatim.errors import UsageError
|
from nominatim.errors import UsageError
|
||||||
import nominatim.version
|
import nominatim.version
|
||||||
|
|
||||||
|
from mock_legacy_word_table import MockLegacyWordTable
|
||||||
|
|
||||||
class DummyTokenizer:
|
class DummyTokenizer:
|
||||||
|
|
||||||
def update_sql_functions(self, config):
|
def update_sql_functions(self, config):
|
||||||
@@ -26,6 +28,10 @@ def postprocess_mock(monkeypatch):
|
|||||||
monkeypatch.setattr(migration.tokenizer_factory, 'get_tokenizer_for_db',
|
monkeypatch.setattr(migration.tokenizer_factory, 'get_tokenizer_for_db',
|
||||||
lambda *args: DummyTokenizer())
|
lambda *args: DummyTokenizer())
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def legacy_word_table(temp_db_conn):
|
||||||
|
return MockLegacyWordTable(temp_db_conn)
|
||||||
|
|
||||||
|
|
||||||
def test_no_migration_old_versions(temp_db_with_extensions, table_factory, def_config):
|
def test_no_migration_old_versions(temp_db_with_extensions, table_factory, def_config):
|
||||||
table_factory('country_name', 'name HSTORE, country_code TEXT')
|
table_factory('country_name', 'name HSTORE, country_code TEXT')
|
||||||
@@ -156,7 +162,7 @@ def test_add_nominatim_property_table_repeat(temp_db_conn, temp_db_cursor,
|
|||||||
|
|
||||||
|
|
||||||
def test_change_housenumber_transliteration(temp_db_conn, temp_db_cursor,
|
def test_change_housenumber_transliteration(temp_db_conn, temp_db_cursor,
|
||||||
word_table, placex_table):
|
legacy_word_table, placex_table):
|
||||||
placex_table.add(housenumber='3A')
|
placex_table.add(housenumber='3A')
|
||||||
|
|
||||||
temp_db_cursor.execute("""CREATE OR REPLACE FUNCTION make_standard_name(name TEXT)
|
temp_db_cursor.execute("""CREATE OR REPLACE FUNCTION make_standard_name(name TEXT)
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ def tokenizer():
|
|||||||
return dummy_tokenizer.DummyTokenizer(None, None)
|
return dummy_tokenizer.DummyTokenizer(None, None)
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def postcode_table(temp_db_conn, placex_table, word_table):
|
def postcode_table(temp_db_conn, placex_table):
|
||||||
return MockPostcodeTable(temp_db_conn)
|
return MockPostcodeTable(temp_db_conn)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user