summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCody Maloney <cmaloney@users.noreply.github.com>2024-12-14 07:36:47 (GMT)
committerGitHub <noreply@github.com>2024-12-14 07:36:47 (GMT)
commitc0264fc57c51e68015bef95a2208711356b57c1f (patch)
tree8887222ce6fa57fa5278fce98c3370ff431fae36
parent2de048ce79e621f5ae0574095b9600fe8595f607 (diff)
downloadcpython-c0264fc57c51e68015bef95a2208711356b57c1f.zip
cpython-c0264fc57c51e68015bef95a2208711356b57c1f.tar.gz
cpython-c0264fc57c51e68015bef95a2208711356b57c1f.tar.bz2
gh-127747: Resolve BytesWarning in test.support.strace_helper (#127849)
The strace_helper code has a _make_error function to simplify making StraceResult objects in error cases. That takes a details parameter which is either a caught OSError or `bytes`. If it's bytes, _make_error would implicitly coerce that to a str inside of a f-string, resulting in a BytesWarning. It's useful to see if it's an OSError or bytes when debugging, resolve by changing to format with repr(). This is an error message on an internal helper. A non-zero exit code occurs if the strace binary isn't found, and no events will be parsed in that case (there is no output). Handle that case by checking exit code before checking for events. Still asserting around events rather than returning false, so that hopefully if there's some change to `strace` that breaks the parsing, will see that as a test failure rather than silently loosing strace tests because they are auto-disabled.
-rw-r--r--Lib/test/support/strace_helper.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/Lib/test/support/strace_helper.py b/Lib/test/support/strace_helper.py
index eab16ea..798d6c6 100644
--- a/Lib/test/support/strace_helper.py
+++ b/Lib/test/support/strace_helper.py
@@ -104,7 +104,7 @@ def strace_python(code, strace_flags, check=True):
return StraceResult(
strace_returncode=-1,
python_returncode=-1,
- event_bytes=f"error({reason},details={details}) = -1".encode('utf-8'),
+ event_bytes= f"error({reason},details={details!r}) = -1".encode('utf-8'),
stdout=res.out if res else b"",
stderr=res.err if res else b"")
@@ -179,9 +179,10 @@ def get_syscalls(code, strace_flags, prelude="", cleanup="",
@cache
def _can_strace():
res = strace_python("import sys; sys.exit(0)", [], check=False)
- assert res.events(), "Should have parsed multiple calls"
-
- return res.strace_returncode == 0 and res.python_returncode == 0
+ if res.strace_returncode == 0 and res.python_returncode == 0:
+ assert res.events(), "Should have parsed multiple calls"
+ return True
+ return False
def requires_strace():