-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.
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)
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__)
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:
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)
--- /dev/null
+"""
+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