Skip to content

Commit e7c3f77

Browse files
committed
Extend ExecResult API check_exit_code
Add `verbose` flag for detail logging enable
1 parent eeab98c commit e7c3f77

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

doc/source/ExecResult.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ API: ExecResult
132132

133133
Exit code is EX_OK
134134

135-
.. py:method:: check_exit_code(expected_codes=(0,), raise_on_err=True, error_info=None, exception_class=CalledProcessError, logger=LOGGER)
135+
.. py:method:: check_exit_code(expected_codes=(0,), raise_on_err=True, error_info=None, exception_class=CalledProcessError, logger=LOGGER, verbose=False)
136136
137137
Check exit code and log/raise for unexpected code.
138138

@@ -146,6 +146,8 @@ API: ExecResult
146146
:type exception_class: type[exceptions.CalledProcessError]
147147
:param logger: logger instance for error log
148148
:type logger: logging.Logger
149+
:param verbose: produce verbose log in case of failure
150+
:type verbose: bool
149151
:raises exceptions.CalledProcessError: unexpected exit code and raise_on_err enabled
150152

151153
.. py:method:: raise_for_status(expected_codes=(0,), exception_class=CalledProcessError)

exec_helpers/exec_result.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,7 @@ def check_exit_code(
582582
error_info: str | None = None,
583583
exception_class: type[exceptions.CalledProcessError] = exceptions.CalledProcessError,
584584
logger: logging.Logger = LOGGER,
585+
verbose: bool = False,
585586
) -> None:
586587
"""Check exit code and log/raise for unexpected code.
587588
@@ -595,12 +596,18 @@ def check_exit_code(
595596
:type exception_class: type[exceptions.CalledProcessError]
596597
:param logger: logger instance for error log
597598
:type logger: logging.Logger
599+
:param verbose: produce verbose log in case of failure
600+
:type verbose: bool
598601
:raises exceptions.CalledProcessError: unexpected exit code and raise_on_err enabled
599602
"""
600603
append: str = error_info + "\n" if error_info else ""
601604
expected = tuple(frozenset(expected_codes))
602605
if self.exit_code not in expected:
603606
message = f"{append}Command {self.cmd!r} returned exit code {self.exit_code!s} while expected {expected!s}"
607+
if verbose:
608+
message += f"\nSTDOUT:\n{self.stdout_str}\n\nSTDERR:\n{self.stderr_str}"
609+
else:
610+
message += f"\nBrief STDOUT:\n{self.stdout_brief}\n\nBrief STDERR:\n{self.stderr_brief}"
604611
logger.error(msg=message)
605612
if raise_on_err:
606613
self.raise_for_status(expected_codes=expected, exception_class=exception_class)

0 commit comments

Comments
 (0)