X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/01f5a9ff843846d52ee671d19fda8301b82c84c4..9934421442bf1a815096ef06ffa3f8c9ea11c0ac:/test/python/conftest.py diff --git a/test/python/conftest.py b/test/python/conftest.py index 97f4c487..4812e3f0 100644 --- a/test/python/conftest.py +++ b/test/python/conftest.py @@ -5,7 +5,7 @@ from pathlib import Path import psycopg2 import pytest -SRC_DIR = Path(__file__) / '..' / '..' / '..' +SRC_DIR = (Path(__file__) / '..' / '..' / '..').resolve() # always test against the source sys.path.insert(0, str(SRC_DIR.resolve())) @@ -13,7 +13,6 @@ sys.path.insert(0, str(SRC_DIR.resolve())) from nominatim.config import Configuration from nominatim.db import connection from nominatim.db.sql_preprocessor import SQLPreprocessor -from nominatim.db import properties import nominatim.tokenizer.factory import nominatim.cli @@ -116,23 +115,24 @@ def src_dir(): @pytest.fixture def cli_call(): def _call_nominatim(*args): - return nominatim.cli.nominatim( - module_dir='MODULE NOT AVAILABLE', - osm2pgsql_path='OSM2PGSQL NOT AVAILABLE', - phplib_dir=str(SRC_DIR / 'lib-php'), - data_dir=str(SRC_DIR / 'data'), - phpcgi_path='/usr/bin/php-cgi', - sqllib_dir=str(SRC_DIR / 'lib-sql'), - config_dir=str(SRC_DIR / 'settings'), - cli_args=args) + return nominatim.cli.nominatim(module_dir='MODULE NOT AVAILABLE', + osm2pgsql_path='OSM2PGSQL NOT AVAILABLE', + phplib_dir=str(SRC_DIR / 'lib-php'), + data_dir=str(SRC_DIR / 'data'), + phpcgi_path='/usr/bin/php-cgi', + sqllib_dir=str(SRC_DIR / 'lib-sql'), + config_dir=str(SRC_DIR / 'settings'), + cli_args=args) return _call_nominatim @pytest.fixture -def property_table(table_factory): +def property_table(table_factory, temp_db_conn): table_factory('nominatim_properties', 'property TEXT, value TEXT') + return mocks.MockPropertyTable(temp_db_conn) + @pytest.fixture def status_table(table_factory): @@ -173,6 +173,7 @@ def place_row(place_table, temp_db_cursor): """ A factory for rows in the place table. The table is created as a prerequisite to the fixture. """ + psycopg2.extras.register_hstore(temp_db_cursor) idseq = itertools.count(1001) def _insert(osm_type='N', osm_id=None, cls='amenity', typ='cafe', names=None, admin_level=None, address=None, extratags=None, geom=None): @@ -225,29 +226,34 @@ def osm2pgsql_options(temp_db): tablespaces=dict(slim_data='', slim_index='', main_data='', main_index='')) + @pytest.fixture -def sql_preprocessor(temp_db_conn, tmp_path, monkeypatch, table_factory): +def sql_preprocessor_cfg(tmp_path, table_factory, temp_db_with_extensions): table_factory('country_name', 'partition INT', ((0, ), (1, ), (2, ))) cfg = Configuration(None, SRC_DIR.resolve() / 'settings') cfg.set_libdirs(module='.', osm2pgsql='.', php=SRC_DIR / 'lib-php', sql=tmp_path, data=SRC_DIR / 'data') + return cfg - return SQLPreprocessor(temp_db_conn, cfg) + +@pytest.fixture +def sql_preprocessor(sql_preprocessor_cfg, temp_db_conn): + return SQLPreprocessor(temp_db_conn, sql_preprocessor_cfg) @pytest.fixture -def tokenizer_mock(monkeypatch, property_table, temp_db_conn, tmp_path): +def tokenizer_mock(monkeypatch, property_table): """ Sets up the configuration so that the test dummy tokenizer will be loaded when the tokenizer factory is used. Also returns a factory with which a new dummy tokenizer may be created. """ monkeypatch.setenv('NOMINATIM_TOKENIZER', 'dummy') - def _import_dummy(module, *args, **kwargs): + def _import_dummy(*args, **kwargs): return dummy_tokenizer monkeypatch.setattr(nominatim.tokenizer.factory, "_import_tokenizer", _import_dummy) - properties.set_property(temp_db_conn, 'tokenizer', 'dummy') + property_table.set('tokenizer', 'dummy') def _create_tokenizer(): return dummy_tokenizer.DummyTokenizer(None, None)