From 88c099d756262bd326b03bfe930b381666cb43e8 Mon Sep 17 00:00:00 2001 From: Frantisek Hrbata Date: Fri, 24 Jan 2025 14:27:57 +0100 Subject: [PATCH] fix(tools): allow to save stdout and stderr if the exec command fails Currently, if a command run by the exec command returns an error code, its stdout and stderr are not saved. It could be beneficial to store at least the stderr if requested. Additionally, avoid creating output files when there is no content and also store the stderr of the failed command to diag.log. Signed-off-by: Frantisek Hrbata --- tools/idf_py_actions/diag_ext.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/idf_py_actions/diag_ext.py b/tools/idf_py_actions/diag_ext.py index 57cd34cd1ad..2b0a15d63bd 100644 --- a/tools/idf_py_actions/diag_ext.py +++ b/tools/idf_py_actions/diag_ext.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD +# SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 import atexit import difflib @@ -583,9 +583,10 @@ def cmd_exec(args: Dict, step: Dict, recipe: Dict) -> None: if p.returncode: warn(f'Exec command "{cmd}" failed with exit code {p.returncode}') - return + if p.stderr: + dbg(f'stderr: "{p.stderr}"') - if stdout: + if stdout and p.stdout: try: stdout_path.parent.mkdir(parents=True, exist_ok=True) with open(stdout_path, 'a' if append else 'w') as f: @@ -593,7 +594,7 @@ def cmd_exec(args: Dict, step: Dict, recipe: Dict) -> None: except Exception: warn(f'Cannot write exec command "{cmd}" stdout to "{stdout}"') - if stderr: + if stderr and p.stderr: try: stderr_path.parent.mkdir(parents=True, exist_ok=True) with open(stderr_path, 'a' if append else 'w') as f: