SERVER-115022: Replace pipes with shlex for Python 3.13 compatibility (#44931)

GitOrigin-RevId: 00e16db1e32b143ccd2b50efc2bf4fa85152147f
This commit is contained in:
Nick Jefferies 2025-12-09 17:13:50 -05:00 committed by MongoDB Bot
parent b4dbb2d3af
commit f29045d37e
2 changed files with 7 additions and 9 deletions

View File

@ -8,7 +8,6 @@ import importlib
import json import json
import logging import logging
import os import os
import pipes
import random import random
import re import re
import shlex import shlex
@ -1180,7 +1179,7 @@ def get_mongo_client_args(
def mongo_shell(mongo_path, work_dir, host_port, mongo_cmds, retries=5, retry_sleep=5): def mongo_shell(mongo_path, work_dir, host_port, mongo_cmds, retries=5, retry_sleep=5):
"""Start mongo_path from work_dir, connecting to host_port and executes mongo_cmds.""" """Start mongo_path from work_dir, connecting to host_port and executes mongo_cmds."""
cmds = "cd {}; echo {} | {} {}".format( cmds = "cd {}; echo {} | {} {}".format(
pipes.quote(work_dir), pipes.quote(mongo_cmds), pipes.quote(mongo_path), host_port shlex.quote(work_dir), shlex.quote(mongo_cmds), shlex.quote(mongo_path), host_port
) )
attempt_num = 0 attempt_num = 0
while True: while True:
@ -1341,15 +1340,15 @@ def resmoke_client(
"""Start resmoke client from work_dir, connecting to host_port and executes js_test.""" """Start resmoke client from work_dir, connecting to host_port and executes js_test."""
log_output = f">> {log_file} 2>&1" if log_file else "" log_output = f">> {log_file} 2>&1" if log_file else ""
cmds = ( cmds = (
f"cd {pipes.quote(work_dir)};" f"cd {shlex.quote(work_dir)};"
f" python {powercycle_constants.RESMOKE_PATH}" f" python {powercycle_constants.RESMOKE_PATH}"
f" run" f" run"
f" --mongo {pipes.quote(mongo_path)}" f" --mongo {shlex.quote(mongo_path)}"
f" --suites {pipes.quote(resmoke_suite)}" f" --suites {shlex.quote(resmoke_suite)}"
f" --shellConnString mongodb://{host_port}" f" --shellConnString mongodb://{host_port}"
f" --continueOnFailure" f" --continueOnFailure"
f" --repeat {repeat_num}" f" --repeat {repeat_num}"
f" {pipes.quote(js_test)}" f" {shlex.quote(js_test)}"
f" {log_output}" f" {log_output}"
) )
ret, output = None, None ret, output = None, None

View File

@ -1,7 +1,6 @@
"""Utility to support running a command in a subprocess.""" """Utility to support running a command in a subprocess."""
import os import os
import pipes
import shlex import shlex
import subprocess import subprocess
@ -31,8 +30,8 @@ class RunCommand(object):
def add_file(self, path): def add_file(self, path):
"""Add a file path to the command.""" """Add a file path to the command."""
# For Windows compatability, use pipes.quote around file paths. # For Windows compatability, use shlex.quote around file paths.
self._command = "{}{}{}".format(self._command, self._space(), pipes.quote(path)) self._command = "{}{}{}".format(self._command, self._space(), shlex.quote(path))
def _space(self): def _space(self):
"""Return a space if the command has been started to be built.""" """Return a space if the command has been started to be built."""