]> git.openstreetmap.org Git - nominatim.git/commitdiff
bdd: directly call utility scripts in lib
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 14 Jan 2021 17:19:22 +0000 (18:19 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Thu, 14 Jan 2021 17:19:22 +0000 (18:19 +0100)
This removes the dependency on php-symfony-dotenv for the tests.

.github/workflows/ci-tests.yml
nominatim/config.py
test/bdd/environment.py
test/bdd/steps/nominatim_environment.py
test/bdd/steps/steps_api_queries.py

index 8dd19aa4621c057cd11c726531dd4ab007f3607e..e57431c012db86203e28158af873c95890025552 100644 (file)
@@ -47,7 +47,7 @@ jobs:
 
             - name: Install test prerequsites
               run: |
-                   sudo apt-get install -y -qq php-codesniffer python3-tidylib php-symfony-dotenv
+                   sudo apt-get install -y -qq php-codesniffer
                    sudo pip3 install behave
 
             - name: PHP linting
index 6395bf2a5a3e10ac2e0b76dc573ac969186721b9..911c7ddf127f68f438ab582c75fa38d5ed469dd8 100644 (file)
@@ -21,7 +21,8 @@ class Configuration:
 
     def __init__(self, project_dir, config_dir):
         self._config = dotenv_values(str((config_dir / 'env.defaults').resolve()))
-        self._config.update(dotenv_values(str((project_dir / '.env').resolve())))
+        if project_dir is not None:
+            self._config.update(dotenv_values(str((project_dir / '.env').resolve())))
 
     def __getattr__(self, name):
         name = 'NOMINATIM_' + name
index cadfda18cb50b438c87405748349e42d6dcde693..30ea30a261c873cd10fecf334ce1dca9a5d90cf6 100644 (file)
@@ -1,6 +1,7 @@
-from behave import *
 from pathlib import Path
 
+from behave import *
+
 from steps.geometry_factory import GeometryFactory
 from steps.nominatim_environment import NominatimEnvironment
 
index e799306a845461d5719c98092f67bfa2766a8572..68d7b2f43544ef1626d29e7ca66962b1bea682ff 100644 (file)
@@ -1,10 +1,13 @@
-import os
 from pathlib import Path
+import sys
 import tempfile
 
 import psycopg2
 import psycopg2.extras
 
+sys.path.insert(1, str((Path(__file__) / '..' / '..' / '..' / '..').resolve()))
+
+from nominatim.config import Configuration
 from steps.utils import run_script
 
 class NominatimEnvironment:
@@ -28,6 +31,7 @@ class NominatimEnvironment:
         self.code_coverage_path = config['PHPCOV']
         self.code_coverage_id = 1
 
+        self.default_config = Configuration(None, self.src_dir / 'settings').get_os_env()
         self.test_env = None
         self.template_db_done = False
         self.api_db_done = False
@@ -78,11 +82,15 @@ class NominatimEnvironment:
            and dsn == self.test_env['NOMINATIM_DATABASE_DSN']:
             return # environment already set uo
 
-        self.test_env = os.environ
+        self.test_env = dict(self.default_config)
         self.test_env['NOMINATIM_DATABASE_DSN'] = dsn
         self.test_env['NOMINATIM_FLATNODE_FILE'] = ''
         self.test_env['NOMINATIM_IMPORT_STYLE'] = 'full'
         self.test_env['NOMINATIM_USE_US_TIGER_DATA'] = 'yes'
+        self.test_env['NOMINATIM_DATADIR'] = self.src_dir
+        self.test_env['NOMINATIM_BINDIR'] = self.src_dir / 'utils'
+        self.test_env['NOMINATIM_DATABASE_MODULE_PATH'] = self.build_dir / 'module'
+        self.test_env['NOMINATIM_OSM2PGSQL_BINARY'] = self.build_dir / 'osm2pgsql' / 'osm2pgsql'
 
         if self.server_module_path:
             self.test_env['NOMINATIM_DATABASE_MODULE_PATH'] = self.server_module_path
@@ -253,7 +261,7 @@ class NominatimEnvironment:
         """ Run one of the Nominatim utility scripts with the given arguments.
         """
         cmd = ['/usr/bin/env', 'php', '-Cq']
-        cmd.append((Path(self.build_dir) / 'utils' / '{}.php'.format(script)).resolve())
+        cmd.append((Path(self.src_dir) / 'lib' / 'admin' / '{}.php'.format(script)).resolve())
         cmd.extend(['--' + x for x in args])
         for k, v in kwargs.items():
             cmd.extend(('--' + k.replace('_', '-'), str(v)))
@@ -261,7 +269,7 @@ class NominatimEnvironment:
         if self.website_dir is not None:
             cwd = self.website_dir.name
         else:
-            cwd = self.build_dir
+            cwd = None
 
         run_script(cmd, cwd=cwd, env=self.test_env)
 
index 7b3597dad3ecd090998c7c0164aa39942f574077..a56081c03109765272bc234fc1364a622f0d0c65 100644 (file)
@@ -59,7 +59,7 @@ def query_cmd(context, query, dups):
     """ Query directly via PHP script.
     """
     cmd = ['/usr/bin/env', 'php']
-    cmd.append(os.path.join(context.nominatim.build_dir, 'utils', 'query.php'))
+    cmd.append(context.nominatim.src_dir  / 'lib' / 'admin' / 'query.php')
     if query:
         cmd.extend(['--search', query])
     # add more parameters in table form
@@ -72,7 +72,8 @@ def query_cmd(context, query, dups):
     if dups:
         cmd.extend(('--dedupe', '0'))
 
-    outp, err = run_script(cmd, cwd=context.nominatim.build_dir)
+    outp, err = run_script(cmd, cwd=context.nominatim.website_dir.name,
+                           env=context.nominatim.test_env)
 
     context.response = SearchResponse(outp, 'json')