From c1fffeab56c7fa1a0d05422709a33d87e2732c53 Mon Sep 17 00:00:00 2001 From: jmkerloch Date: Fri, 15 Mar 2024 15:18:26 +0100 Subject: [PATCH] feat(subprocess): add check of return code --- changelog.md | 1 + r2gg/_subprocess_execution.py | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index c19386a..405ad6b 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,7 @@ CHANGED: - Valhalla build config: increase default isochrone limits +- subprocess : check return code and raise Runtime exception if not 0 ## 2.2.4 diff --git a/r2gg/_subprocess_execution.py b/r2gg/_subprocess_execution.py index 343acda..d2817b5 100644 --- a/r2gg/_subprocess_execution.py +++ b/r2gg/_subprocess_execution.py @@ -14,7 +14,8 @@ def subprocess_execution(args, logger, outfile = None): """ try: str_args = [str(arg) for arg in args] - logger.info('Subprocess: \"' + " ".join(str_args) + '\"') + subprocess_arg = " ".join(str_args) + logger.info('Subprocess: \"' + subprocess_arg + '\"') if outfile is not None: with open(outfile, "w") as out: process = subprocess.Popen( @@ -32,6 +33,12 @@ def subprocess_execution(args, logger, outfile = None): process_output, _ = process.communicate() logger.info(process_output.decode("utf-8")) + returncode = process.returncode + if process.returncode != 0: + error_msg = f"Invalid returncode {returncode} for subprocess '{subprocess_arg}'" + logger.error(error_msg) + raise RuntimeError(error_msg) + except (OSError, subprocess.CalledProcessError) as exception: logger.info('Exception occured: ' + str(exception))