]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/python/cli/conftest.py
Merge pull request #3499 from mtmail/add-data-warn-if-frozen
[nominatim.git] / test / python / cli / conftest.py
index ebf0cf0cd827148aec9f74c34b391137c5d8b47a..d5ade22350a9a7764bfd26678fd1b97d559f22bf 100644 (file)
@@ -1,6 +1,12 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of Nominatim. (https://nominatim.org)
+#
+# Copyright (C) 2024 by the Nominatim developer community.
+# For a full list of authors see the git log.
 import pytest
 
-import nominatim.cli
+import nominatim_db.cli
 
 class MockParamCapture:
     """ Mock that records the parameters with which a function was called
@@ -19,51 +25,71 @@ class MockParamCapture:
         return self.return_value
 
 
+class AsyncMockParamCapture:
+    """ Mock that records the parameters with which a function was called
+        as well as the number of calls.
+    """
+    def __init__(self, retval=0):
+        self.called = 0
+        self.return_value = retval
+        self.last_args = None
+        self.last_kwargs = None
+
+    async def __call__(self, *args, **kwargs):
+        self.called += 1
+        self.last_args = args
+        self.last_kwargs = kwargs
+        return self.return_value
+
+
 class DummyTokenizer:
     def __init__(self, *args, **kwargs):
         self.update_sql_functions_called = False
         self.finalize_import_called = False
         self.update_statistics_called = False
+        self.update_word_tokens_called = False
 
-    def update_sql_functions(self, *args):
+    def update_sql_functions(self, *args, **kwargs):
         self.update_sql_functions_called = True
 
-    def finalize_import(self, *args):
+    def finalize_import(self, *args, **kwargs):
         self.finalize_import_called = True
 
-    def update_statistics(self):
+    def update_statistics(self, *args, **kwargs):
         self.update_statistics_called = True
 
+    def update_word_tokens(self, *args, **kwargs):
+        self.update_word_tokens_called = True
+
 
 @pytest.fixture
-def cli_call(src_dir):
+def cli_call():
     """ Call the nominatim main function with the correct paths set.
         Returns a function that can be called with the desired CLI arguments.
     """
     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_db.cli.nominatim(module_dir='MODULE NOT AVAILABLE',
+                                          osm2pgsql_path='OSM2PGSQL NOT AVAILABLE',
+                                          cli_args=args)
 
     return _call_nominatim
 
 
 @pytest.fixture
-def mock_run_legacy(monkeypatch):
-    mock = MockParamCapture()
-    monkeypatch.setattr(nominatim.cli, 'run_legacy_script', mock)
-    return mock
+def mock_func_factory(monkeypatch):
+    def get_mock(module, func):
+        mock = MockParamCapture()
+        mock.func_name = func
+        monkeypatch.setattr(module, func, mock)
+        return mock
+
+    return get_mock
 
 
 @pytest.fixture
-def mock_func_factory(monkeypatch):
+def async_mock_func_factory(monkeypatch):
     def get_mock(module, func):
-        mock = MockParamCapture()
+        mock = AsyncMockParamCapture()
         mock.func_name = func
         monkeypatch.setattr(module, func, mock)
         return mock
@@ -74,9 +100,9 @@ def mock_func_factory(monkeypatch):
 @pytest.fixture
 def cli_tokenizer_mock(monkeypatch):
     tok = DummyTokenizer()
-    monkeypatch.setattr(nominatim.tokenizer.factory, 'get_tokenizer_for_db',
+    monkeypatch.setattr(nominatim_db.tokenizer.factory, 'get_tokenizer_for_db',
                         lambda *args: tok)
-    monkeypatch.setattr(nominatim.tokenizer.factory, 'create_tokenizer',
+    monkeypatch.setattr(nominatim_db.tokenizer.factory, 'create_tokenizer',
                         lambda *args: tok)
 
     return tok