]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/bdd/steps/steps_osm_data.py
enable flake for bdd test code
[nominatim.git] / test / bdd / steps / steps_osm_data.py
index 7590b17c9c81c7a97c4f9cfc0bdf339db2cc4405..69f7199473f787972cd739a47f4945cc40c44b5a 100644 (file)
@@ -1,32 +1,32 @@
-# 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.
 import tempfile
 import random
 import os
 from pathlib import Path
 
 # For a full list of authors see the git log.
 import tempfile
 import random
 import os
 from pathlib import Path
 
-from nominatim.tools.exec_utils import run_osm2pgsql
-from nominatim.tools.replication import run_osm2pgsql_updates
+from nominatim_db.tools.exec_utils import run_osm2pgsql
+from nominatim_db.tools.replication import run_osm2pgsql_updates
 
 from geometry_alias import ALIASES
 
 
 from geometry_alias import ALIASES
 
+
 def get_osm2pgsql_options(nominatim_env, fname, append):
     return dict(import_file=fname,
 def get_osm2pgsql_options(nominatim_env, fname, append):
     return dict(import_file=fname,
-                osm2pgsql=str(nominatim_env.build_dir / 'osm2pgsql' / 'osm2pgsql'),
+                osm2pgsql='osm2pgsql',
                 osm2pgsql_cache=50,
                 osm2pgsql_style=str(nominatim_env.get_test_config().get_import_style_file()),
                 osm2pgsql_cache=50,
                 osm2pgsql_style=str(nominatim_env.get_test_config().get_import_style_file()),
-                osm2pgsql_style_path=nominatim_env.get_test_config().config_dir,
+                osm2pgsql_style_path=nominatim_env.get_test_config().lib_dir.lua,
                 threads=1,
                 dsn=nominatim_env.get_libpq_dsn(),
                 flatnode_file='',
                 tablespaces=dict(slim_data='', slim_index='',
                                  main_data='', main_index=''),
                 threads=1,
                 dsn=nominatim_env.get_libpq_dsn(),
                 flatnode_file='',
                 tablespaces=dict(slim_data='', slim_index='',
                                  main_data='', main_index=''),
-                append=append
-               )
+                append=append)
 
 
 def write_opl_file(opl, grid):
 
 
 def write_opl_file(opl, grid):
@@ -41,14 +41,23 @@ def write_opl_file(opl, grid):
             if line.startswith('n') and line.find(' x') < 0:
                 coord = grid.grid_node(int(line[1:].split(' ')[0]))
                 if coord is None:
             if line.startswith('n') and line.find(' x') < 0:
                 coord = grid.grid_node(int(line[1:].split(' ')[0]))
                 if coord is None:
-                    coord = (random.random() * 360 - 180,
-                             random.random() * 180 - 90)
+                    coord = (random.uniform(-180, 180), random.uniform(-90, 90))
                 line += " x%f y%f" % coord
             fd.write(line.encode('utf-8'))
             fd.write(b'\n')
 
         return fd.name
 
                 line += " x%f y%f" % coord
             fd.write(line.encode('utf-8'))
             fd.write(b'\n')
 
         return fd.name
 
+
+@given('the lua style file')
+def lua_style_file(context):
+    """ Define a custom style file to use for the import.
+    """
+    style = Path(context.nominatim.website_dir.name) / 'custom.lua'
+    style.write_text(context.text)
+    context.nominatim.test_env['NOMINATIM_IMPORT_STYLE'] = str(style)
+
+
 @given(u'the ([0-9.]+ )?grid(?: with origin (?P<origin>.*))?')
 def define_node_grid(context, grid_step, origin):
     """
 @given(u'the ([0-9.]+ )?grid(?: with origin (?P<origin>.*))?')
 def define_node_grid(context, grid_step, origin):
     """
@@ -66,7 +75,7 @@ def define_node_grid(context, grid_step, origin):
             # TODO coordinate
             coords = origin.split(',')
             if len(coords) != 2:
             # TODO coordinate
             coords = origin.split(',')
             if len(coords) != 2:
-                raise RuntimeError('Grid origin expects orgin with x,y coordinates.')
+                raise RuntimeError('Grid origin expects origin with x,y coordinates.')
             origin = (float(coords[0]), float(coords[1]))
         elif origin in ALIASES:
             origin = ALIASES[origin]
             origin = (float(coords[0]), float(coords[1]))
         elif origin in ALIASES:
             origin = ALIASES[origin]
@@ -82,7 +91,7 @@ def define_node_grid(context, grid_step, origin):
 @when(u'loading osm data')
 def load_osm_file(context):
     """
 @when(u'loading osm data')
 def load_osm_file(context):
     """
-    Load the given data into a freshly created test data using osm2pgsql.
+    Load the given data into a freshly created test database using osm2pgsql.
     No further indexing is done.
 
     The data is expected as attached text in OPL format.
     No further indexing is done.
 
     The data is expected as attached text in OPL format.
@@ -94,13 +103,14 @@ def load_osm_file(context):
     finally:
         os.remove(fname)
 
     finally:
         os.remove(fname)
 
-    ### reintroduce the triggers/indexes we've lost by having osm2pgsql set up place again
+    # reintroduce the triggers/indexes we've lost by having osm2pgsql set up place again
     cur = context.db.cursor()
     cur.execute("""CREATE TRIGGER place_before_delete BEFORE DELETE ON place
                     FOR EACH ROW EXECUTE PROCEDURE place_delete()""")
     cur.execute("""CREATE TRIGGER place_before_insert BEFORE INSERT ON place
                    FOR EACH ROW EXECUTE PROCEDURE place_insert()""")
     cur = context.db.cursor()
     cur.execute("""CREATE TRIGGER place_before_delete BEFORE DELETE ON place
                     FOR EACH ROW EXECUTE PROCEDURE place_delete()""")
     cur.execute("""CREATE TRIGGER place_before_insert BEFORE INSERT ON place
                    FOR EACH ROW EXECUTE PROCEDURE place_insert()""")
-    cur.execute("""CREATE UNIQUE INDEX idx_place_osm_unique on place using btree(osm_id,osm_type,class,type)""")
+    cur.execute("""CREATE UNIQUE INDEX idx_place_osm_unique ON place
+                   USING btree(osm_id,osm_type,class,type)""")
     context.db.commit()
 
 
     context.db.commit()
 
 
@@ -124,6 +134,7 @@ def update_from_osm_file(context):
     finally:
         os.remove(fname)
 
     finally:
         os.remove(fname)
 
+
 @when('indexing')
 def index_database(context):
     """
 @when('indexing')
 def index_database(context):
     """