From 8791c6cb69e344dac314078100c5c030b04e26f1 Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Tue, 5 Dec 2023 21:20:57 +0100 Subject: [PATCH] correctly close API objects during testing --- nominatim/tools/convert_sqlite.py | 9 ++++++--- test/python/api/conftest.py | 16 +++++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/nominatim/tools/convert_sqlite.py b/nominatim/tools/convert_sqlite.py index 0702e5d8..16f51b66 100644 --- a/nominatim/tools/convert_sqlite.py +++ b/nominatim/tools/convert_sqlite.py @@ -29,9 +29,12 @@ async def convert(project_dir: Path, outfile: Path, options: Set[str]) -> None: outapi = napi.NominatimAPIAsync(project_dir, {'NOMINATIM_DATABASE_DSN': f"sqlite:dbname={outfile}"}) - async with api.begin() as src, outapi.begin() as dest: - writer = SqliteWriter(src, dest, options) - await writer.write() + try: + async with api.begin() as src, outapi.begin() as dest: + writer = SqliteWriter(src, dest, options) + await writer.write() + finally: + await outapi.close() finally: await api.close() diff --git a/test/python/api/conftest.py b/test/python/api/conftest.py index 8f0604d4..91a3107f 100644 --- a/test/python/api/conftest.py +++ b/test/python/api/conftest.py @@ -190,18 +190,24 @@ def apiobj(temp_db_with_extensions, temp_db_conn, monkeypatch): @pytest.fixture(params=['postgres_db', 'sqlite_db']) def frontend(request, event_loop, tmp_path): + testapis = [] if request.param == 'sqlite_db': db = str(tmp_path / 'test_nominatim_python_unittest.sqlite') def mkapi(apiobj, options={'reverse'}): event_loop.run_until_complete(convert_sqlite.convert(Path('/invalid'), db, options)) - return napi.NominatimAPI(Path('/invalid'), - {'NOMINATIM_DATABASE_DSN': f"sqlite:dbname={db}", - 'NOMINATIM_USE_US_TIGER_DATA': 'yes', - 'NOMINATIM_API_POOL_SIZE': '0'}) + outapi = napi.NominatimAPI(Path('/invalid'), + {'NOMINATIM_DATABASE_DSN': f"sqlite:dbname={db}", + 'NOMINATIM_USE_US_TIGER_DATA': 'yes'}) + testapis.append(outapi) + + return outapi elif request.param == 'postgres_db': def mkapi(apiobj, options=None): return apiobj.api - return mkapi + yield mkapi + + for api in testapis: + api.close() -- 2.39.5