Skip to content

Commit

Permalink
fix(tools): allow to save stdout and stderr if the exec command fails
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
fhrbata committed Jan 24, 2025
1 parent e5ee420 commit 88c099d
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions tools/idf_py_actions/diag_ext.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -583,17 +583,18 @@ 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:
f.write(p.stdout)
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:
Expand Down

0 comments on commit 88c099d

Please sign in to comment.