]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/steps/nominatim_environment.py
Merge pull request #3463 from lonvia/sqlalchemy14-with-psycopg
[nominatim.git] / test / bdd / steps / nominatim_environment.py
index 64b62abaa88dc5ba0757e0130454534e339a4d4f..dfbbee2874f56cf3918982aa45201b0ede3c1557 100644 (file)
@@ -1,8 +1,8 @@
-# SPDX-License-Identifier: GPL-2.0-only
+# SPDX-License-Identifier: GPL-3.0-or-later
 #
 # This file is part of Nominatim. (https://nominatim.org)
 #
 #
 # This file is part of Nominatim. (https://nominatim.org)
 #
-# Copyright (C) 2022 by the Nominatim developer community.
+# Copyright (C) 2024 by the Nominatim developer community.
 # For a full list of authors see the git log.
 from pathlib import Path
 import importlib
 # For a full list of authors see the git log.
 from pathlib import Path
 import importlib
@@ -12,13 +12,13 @@ import tempfile
 import psycopg2
 import psycopg2.extras
 
 import psycopg2
 import psycopg2.extras
 
-sys.path.insert(1, str((Path(__file__) / '..' / '..' / '..' / '..').resolve()))
+sys.path.insert(1, str((Path(__file__) / '..' / '..' / '..' / '..'/ 'src').resolve()))
 
 
-from nominatim import cli
-from nominatim.config import Configuration
-from nominatim.db.connection import Connection
-from nominatim.tools import refresh
-from nominatim.tokenizer import factory as tokenizer_factory
+from nominatim_db import cli
+from nominatim_db.config import Configuration
+from nominatim_db.db.connection import Connection
+from nominatim_db.tools import refresh
+from nominatim_db.tokenizer import factory as tokenizer_factory
 from steps.utils import run_script
 
 class NominatimEnvironment:
 from steps.utils import run_script
 
 class NominatimEnvironment:
@@ -86,7 +86,10 @@ class NominatimEnvironment:
             be picked up by dotenv and creates a project directory with the
             appropriate website scripts.
         """
             be picked up by dotenv and creates a project directory with the
             appropriate website scripts.
         """
-        dsn = 'pgsql:dbname={}'.format(dbname)
+        if dbname.startswith('sqlite:'):
+            dsn = 'sqlite:dbname={}'.format(dbname[7:])
+        else:
+            dsn = 'pgsql:dbname={}'.format(dbname)
         if self.db_host:
             dsn += ';host=' + self.db_host
         if self.db_port:
         if self.db_host:
             dsn += ';host=' + self.db_host
         if self.db_port:
@@ -197,6 +200,9 @@ class NominatimEnvironment:
         """
         self.write_nominatim_config(self.api_test_db)
 
         """
         self.write_nominatim_config(self.api_test_db)
 
+        if self.api_test_db.startswith('sqlite:'):
+            return
+
         if not self.api_db_done:
             self.api_db_done = True
 
         if not self.api_db_done:
             self.api_db_done = True
 
@@ -264,8 +270,8 @@ class NominatimEnvironment:
             self.db_drop_database(self.test_db)
 
     def _reuse_or_drop_db(self, name):
             self.db_drop_database(self.test_db)
 
     def _reuse_or_drop_db(self, name):
-        """ Check for the existance of the given DB. If reuse is enabled,
-            then the function checks for existance and returns True if the
+        """ Check for the existence of the given DB. If reuse is enabled,
+            then the function checks for existnce and returns True if the
             database is already there. Otherwise an existing database is
             dropped and always false returned.
         """
             database is already there. Otherwise an existing database is
             dropped and always false returned.
         """
@@ -305,7 +311,6 @@ class NominatimEnvironment:
         cli.nominatim(module_dir='',
                       osm2pgsql_path=str(self.build_dir / 'osm2pgsql' / 'osm2pgsql'),
                       cli_args=cmdline,
         cli.nominatim(module_dir='',
                       osm2pgsql_path=str(self.build_dir / 'osm2pgsql' / 'osm2pgsql'),
                       cli_args=cmdline,
-                      phpcgi_path='',
                       environ=self.test_env)
 
 
                       environ=self.test_env)
 
 
@@ -333,12 +338,12 @@ class NominatimEnvironment:
 
 
     def create_api_request_func_starlette(self):
 
 
     def create_api_request_func_starlette(self):
-        import nominatim.server.starlette.server
+        import nominatim_api.server.starlette.server
         from asgi_lifespan import LifespanManager
         import httpx
 
         async def _request(endpoint, params, project_dir, environ, http_headers):
         from asgi_lifespan import LifespanManager
         import httpx
 
         async def _request(endpoint, params, project_dir, environ, http_headers):
-            app = nominatim.server.starlette.server.get_application(project_dir, environ)
+            app = nominatim_api.server.starlette.server.get_application(project_dir, environ)
 
             async with LifespanManager(app):
                 async with httpx.AsyncClient(app=app, base_url="http://nominatim.test") as client:
 
             async with LifespanManager(app):
                 async with httpx.AsyncClient(app=app, base_url="http://nominatim.test") as client:
@@ -350,26 +355,12 @@ class NominatimEnvironment:
         return _request
 
 
         return _request
 
 
-    def create_api_request_func_sanic(self):
-        import nominatim.server.sanic.server
-
-        async def _request(endpoint, params, project_dir, environ, http_headers):
-            app = nominatim.server.sanic.server.get_application(project_dir, environ)
-
-            _, response = await app.asgi_client.get(f"/{endpoint}", params=params,
-                                                    headers=http_headers)
-
-            return response.text, response.status_code
-
-        return _request
-
-
     def create_api_request_func_falcon(self):
     def create_api_request_func_falcon(self):
-        import nominatim.server.falcon.server
+        import nominatim_api.server.falcon.server
         import falcon.testing
 
         async def _request(endpoint, params, project_dir, environ, http_headers):
         import falcon.testing
 
         async def _request(endpoint, params, project_dir, environ, http_headers):
-            app = nominatim.server.falcon.server.get_application(project_dir, environ)
+            app = nominatim_api.server.falcon.server.get_application(project_dir, environ)
 
             async with falcon.testing.ASGIConductor(app) as conductor:
                 response = await conductor.get(f"/{endpoint}", params=params,
 
             async with falcon.testing.ASGIConductor(app) as conductor:
                 response = await conductor.get(f"/{endpoint}", params=params,