diff --git a/src/pluggy/_tracing.py b/src/pluggy/_tracing.py index e90418f5..514154c4 100644 --- a/src/pluggy/_tracing.py +++ b/src/pluggy/_tracing.py @@ -29,13 +29,17 @@ def _format_message(self, tags: Sequence[str], args: Sequence[object]) -> str: else: extra = {} - content = " ".join(map(str, args)) + def _safe(obj: object) -> str: + text = str(obj) + return text.encode("utf-8", "backslashreplace").decode("utf-8") + + content = " ".join(map(_safe, args)) indent = " " * self.indent lines = [f"{indent}{content} [{':'.join(tags)}]\n"] for name, value in extra.items(): - lines.append(f"{indent} {name}: {value}\n") + lines.append(f"{indent} {name}: {_safe(value)}\n") return "".join(lines)