[lldb/test] Replace shlex.join with shlex.quote

join is only available since python-3.8, but the all the interesting
magic happens in shlex.quote, which has been around since 3.3.

Use shlex.quote, and instead provide a home-grown helper function to
handle the joining.

Differential Revision: https://reviews.llvm.org/D112802
This commit is contained in:
Pavel Labath 2021-10-29 13:33:56 +02:00
parent 11630dbbc3
commit b42d51ba9a
3 changed files with 9 additions and 4 deletions

View File

@ -1,5 +1,6 @@
import binascii
import six
import shlex
if six.PY2:
import commands
@ -49,3 +50,7 @@ def unhexlify(hexstr):
def hexlify(data):
"""Hex-encode string data. The result if always a string."""
return bitcast_to_string(binascii.hexlify(bitcast_to_bytes(data)))
# TODO: Replace this with `shlex.join` when minimum Python version is >= 3.8
def join_for_shell(split_command):
return " ".join([shlex.quote(part) for part in split_command])

View File

@ -45,7 +45,6 @@ import os.path
import re
import shutil
import signal
import shlex
from subprocess import *
import sys
import time
@ -68,6 +67,7 @@ from . import lldbutil
from . import test_categories
from lldbsuite.support import encoded_file
from lldbsuite.support import funcutils
from lldbsuite.support import seven
from lldbsuite.test.builders import get_builder
from lldbsuite.test_event import build_exception
@ -1423,7 +1423,7 @@ class Base(unittest2.TestCase):
self.runBuildCommand(command)
def runBuildCommand(self, command):
self.trace(shlex.join(command))
self.trace(seven.join_for_shell(command))
try:
output = check_output(command, stderr=STDOUT, errors="replace")
except CalledProcessError as cpe:

View File

@ -1,10 +1,10 @@
import shlex
from lldbsuite.support import seven
class BuildError(Exception):
def __init__(self, called_process_error):
super(BuildError, self).__init__("Error when building test subject")
self.command = shlex.join(called_process_error.cmd)
self.command = seven.join_for_shell(called_process_error.cmd)
self.build_error = called_process_error.output
def __str__(self):