]> git.openstreetmap.org Git - nominatim.git/commitdiff
bdd: move external process execution in separate func
authorSarah Hoffmann <lonvia@denofr.de>
Mon, 4 Jan 2021 18:58:59 +0000 (19:58 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Mon, 4 Jan 2021 18:58:59 +0000 (19:58 +0100)
test/bdd/steps/nominatim_environment.py
test/bdd/steps/queries.py
test/bdd/steps/utils.py [new file with mode: 0644]

index 4c9733585fde4bf386b312f5c71fbee9117d6d26..7741d667f64d917d016ff7c36eb26ec1eaef247b 100644 (file)
@@ -1,13 +1,11 @@
-import logging
 import os
 from pathlib import Path
-import subprocess
 import tempfile
 
 import psycopg2
 import psycopg2.extras
 
-LOG = logging.getLogger(__name__)
+from steps.utils import run_script
 
 class NominatimEnvironment:
     """ Collects all functions for the execution of Nominatim functions.
@@ -216,9 +214,4 @@ class NominatimEnvironment:
         else:
             cwd = self.build_dir
 
-        proc = subprocess.Popen(cmd, cwd=cwd, env=self.test_env,
-                                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        (outp, outerr) = proc.communicate()
-        outerr = outerr.decode('utf-8').replace('\\n', '\n')
-        LOG.debug("run_nominatim_script: %s\n%s\n%s", cmd, outp, outerr)
-        assert (proc.returncode == 0), "Script '%s' failed:\n%s\n%s\n" % (script, outp, outerr)
+        run_script(cmd, cwd=cwd, env=self.test_env)
index 0ea4685b3a45d9fa42cd2a26b9cabf472e285133..c7fdd6dba7fdb90aa6dd9345b0649b1fa6041d18 100644 (file)
@@ -10,11 +10,11 @@ import io
 import re
 import logging
 import xml.etree.ElementTree as ET
-import subprocess
 from urllib.parse import urlencode
 from collections import OrderedDict
 
 from check_functions import Almost
+from utils import run_script
 
 logger = logging.getLogger(__name__)
 
@@ -277,14 +277,9 @@ def query_cmd(context, query, dups):
     if dups:
         cmd.extend(('--dedupe', '0'))
 
-    proc = subprocess.Popen(cmd, cwd=context.nominatim.build_dir,
-                            stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-    (outp, err) = proc.communicate()
+    outp, err = run_script(cmd, cwd=context.nominatim.build_dir)
 
-    assert proc.returncode == 0, "query.php failed with message: %s\noutput: %s" % (err, outp)
-    logger.debug("run_nominatim_script: %s\n%s\n" % (cmd, outp.decode('utf-8').replace('\\n', '\n')))
-
-    context.response = SearchResponse(outp.decode('utf-8'), 'json')
+    context.response = SearchResponse(outp, 'json')
 
 def send_api_query(endpoint, params, fmt, context):
     if fmt is not None:
@@ -326,19 +321,7 @@ def send_api_query(endpoint, params, fmt, context):
     for k,v in params.items():
         cmd.append("%s=%s" % (k, v))
 
-    proc = subprocess.Popen(cmd, cwd=context.nominatim.website_dir.name, env=env,
-                            stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-
-    (outp, err) = proc.communicate()
-    outp = outp.decode('utf-8')
-    err = err.decode("utf-8")
-
-    logger.debug("Result: \n===============================\n"
-                 + outp + "\n===============================\n")
-
-    assert proc.returncode == 0, \
-                  "%s failed with message: %s" % (
-                      os.path.basename(env['SCRIPT_FILENAME']), err)
+    outp, err = run_script(cmd, cwd=context.nominatim.website_dir.name, env=env)
 
     assert len(err) == 0, "Unexpected PHP error: %s" % (err)
 
diff --git a/test/bdd/steps/utils.py b/test/bdd/steps/utils.py
new file mode 100644 (file)
index 0000000..64d020d
--- /dev/null
@@ -0,0 +1,22 @@
+"""
+Various smaller helps for step execution.
+"""
+import logging
+import subprocess
+
+LOG = logging.getLogger(__name__)
+
+def run_script(cmd, **kwargs):
+    """ Run the given command, check that it is successful and output
+        when necessary.
+    """
+    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+                            **kwargs)
+    (outp, outerr) = proc.communicate()
+    outp = outp.decode('utf-8')
+    outerr = outerr.decode('utf-8').replace('\\n', '\n')
+    LOG.debug("Run command: %s\n%s\n%s", cmd, outp, outerr)
+
+    assert proc.returncode == 0, "Script '{}' failed:\n{}\n{}\n".format(cmd[0], outp, outerr)
+
+    return outp, outerr