https://github.com/python/cpython/commit/a159c6851f47549d2bc0cd37a0f555951bb11d7b
commit: a159c6851f47549d2bc0cd37a0f555951bb11d7b
branch: main
author: stratakis <[email protected]>
committer: vstinner <[email protected]>
date: 2026-07-09T22:43:54+02:00
summary:
gh-98894: Quote test_dtrace tracer subcommands (#152901)
Use shlex.join() when building tracer -c command strings
for avoiding issues with spaces.
files:
M Lib/test/test_dtrace.py
diff --git a/Lib/test/test_dtrace.py b/Lib/test/test_dtrace.py
index e1662a70b26d3e..30731b8f90ac14 100644
--- a/Lib/test/test_dtrace.py
+++ b/Lib/test/test_dtrace.py
@@ -1,6 +1,7 @@
import dis
import os.path
import re
+import shlex
import signal
import subprocess
import sys
@@ -92,7 +93,7 @@ def run_readelf(cmd):
if proc.returncode:
raise AssertionError(
- f"Command {' '.join(cmd)!r} failed "
+ f"Command {shlex.join(cmd)!r} failed "
f"with exit code {proc.returncode}: "
f"stdout={stdout!r} stderr={stderr!r}"
)
@@ -139,7 +140,7 @@ def trace(self, script_file, subcommand=None, *,
timeout=None,
raise
if check_returncode and proc.returncode:
raise AssertionError(
- f"Command {' '.join(command)!r} failed "
+ f"Command {shlex.join(command)!r} failed "
f"with exit code {proc.returncode}: output={stdout!r}"
)
return stdout
@@ -148,7 +149,7 @@ def trace_python(self, script_file, python_file,
optimize_python=None):
python_flags = []
if optimize_python:
python_flags.extend(["-O"] * optimize_python)
- subcommand = " ".join([sys.executable] + python_flags + [python_file])
+ subcommand = shlex.join([sys.executable] + python_flags +
[python_file])
return self.trace(script_file, subcommand, timeout=60,
check_returncode=True)
@@ -276,7 +277,7 @@ def run_case(self, name, optimize_python=None):
try:
proc = create_process_group(
- ["bpftrace", "-e", program, "-c", " ".join(subcommand)],
+ ["bpftrace", "-e", program, "-c", shlex.join(subcommand)],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True,
@@ -314,7 +315,8 @@ def assert_usable(self):
program = f'usdt:{sys.executable}:python:function__entry {{
printf("probe: success\\n"); exit(); }}'
try:
proc = create_process_group(
- ["bpftrace", "-e", program, "-c", f"{sys.executable} -c pass"],
+ ["bpftrace", "-e", program, "-c",
+ shlex.join([sys.executable, "-c", "pass"])],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True,
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]