1 # SPDX-License-Identifier: GPL-2.0-only
3 # This file is part of Nominatim. (https://nominatim.org)
5 # Copyright (C) 2022 by the Nominatim developer community.
6 # For a full list of authors see the git log.
11 class MockParamCapture:
12 """ Mock that records the parameters with which a function was called
13 as well as the number of calls.
15 def __init__(self, retval=0):
17 self.return_value = retval
19 self.last_kwargs = None
21 def __call__(self, *args, **kwargs):
24 self.last_kwargs = kwargs
25 return self.return_value
29 def __init__(self, *args, **kwargs):
30 self.update_sql_functions_called = False
31 self.finalize_import_called = False
32 self.update_statistics_called = False
33 self.update_word_tokens_called = False
35 def update_sql_functions(self, *args):
36 self.update_sql_functions_called = True
38 def finalize_import(self, *args):
39 self.finalize_import_called = True
41 def update_statistics(self):
42 self.update_statistics_called = True
44 def update_word_tokens(self):
45 self.update_word_tokens_called = True
49 def cli_call(src_dir):
50 """ Call the nominatim main function with the correct paths set.
51 Returns a function that can be called with the desired CLI arguments.
53 def _call_nominatim(*args):
54 return nominatim.cli.nominatim(module_dir='MODULE NOT AVAILABLE',
55 osm2pgsql_path='OSM2PGSQL NOT AVAILABLE',
56 phplib_dir=str(src_dir / 'lib-php'),
57 data_dir=str(src_dir / 'data'),
58 phpcgi_path='/usr/bin/php-cgi',
59 sqllib_dir=str(src_dir / 'lib-sql'),
60 config_dir=str(src_dir / 'settings'),
63 return _call_nominatim
67 def mock_run_legacy(monkeypatch):
68 mock = MockParamCapture()
69 monkeypatch.setattr(nominatim.cli, 'run_legacy_script', mock)
74 def mock_func_factory(monkeypatch):
75 def get_mock(module, func):
76 mock = MockParamCapture()
78 monkeypatch.setattr(module, func, mock)
85 def cli_tokenizer_mock(monkeypatch):
86 tok = DummyTokenizer()
87 monkeypatch.setattr(nominatim.tokenizer.factory, 'get_tokenizer_for_db',
89 monkeypatch.setattr(nominatim.tokenizer.factory, 'create_tokenizer',