[Lldb-commits] [lldb] b42d51b - [lldb/test] Replace shlex.join with shlex.quote

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Fri Oct 29 04:42:14 PDT 2021


Author: Pavel Labath
Date: 2021-10-29T13:42:06+02:00
New Revision: b42d51ba9ad1f85e6b6f3508e6c2c4ab5ee22ac1

URL: https://github.com/llvm/llvm-project/commit/b42d51ba9ad1f85e6b6f3508e6c2c4ab5ee22ac1
DIFF: https://github.com/llvm/llvm-project/commit/b42d51ba9ad1f85e6b6f3508e6c2c4ab5ee22ac1.diff

LOG: [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

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/support/seven.py
    lldb/packages/Python/lldbsuite/test/lldbtest.py
    lldb/packages/Python/lldbsuite/test_event/build_exception.py

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/support/seven.py b/lldb/packages/Python/lldbsuite/support/seven.py
index 9b23d94b021dc..969b61d005c58 100644
--- a/lldb/packages/Python/lldbsuite/support/seven.py
+++ b/lldb/packages/Python/lldbsuite/support/seven.py
@@ -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])

diff  --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py
index 92d7887e670ac..7477905a131d0 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbtest.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py
@@ -45,7 +45,6 @@
 import re
 import shutil
 import signal
-import shlex
 from subprocess import *
 import sys
 import time
@@ -68,6 +67,7 @@
 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 @@ def build(
         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:

diff  --git a/lldb/packages/Python/lldbsuite/test_event/build_exception.py b/lldb/packages/Python/lldbsuite/test_event/build_exception.py
index e1924ad86cde5..f960dca39067d 100644
--- a/lldb/packages/Python/lldbsuite/test_event/build_exception.py
+++ b/lldb/packages/Python/lldbsuite/test_event/build_exception.py
@@ -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):


        


More information about the lldb-commits mailing list