This revision was automatically updated to reflect the committed changes. Closed by commit rG713752610edd: [lldb] Use shutil.which in Shell tests find_executable (authored by DavidSpickett).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D124604/new/ https://reviews.llvm.org/D124604 Files: lldb/test/Shell/helper/build.py Index: lldb/test/Shell/helper/build.py =================================================================== --- lldb/test/Shell/helper/build.py +++ lldb/test/Shell/helper/build.py @@ -4,6 +4,7 @@ import argparse import os +import shutil import signal import subprocess import sys @@ -170,16 +171,14 @@ print(' {0} = {1}'.format(e, formatted_value)) def find_executable(binary_name, search_paths): - if sys.platform == 'win32': - binary_name = binary_name + '.exe' - - search_paths = os.pathsep.join(search_paths) - paths = search_paths + os.pathsep + os.environ.get('PATH', '') - for path in paths.split(os.pathsep): - p = os.path.join(path, binary_name) - if os.path.exists(p) and not os.path.isdir(p): - return os.path.normpath(p) - return None + # shutil.which will ignore PATH if given a path argument, we want to include it. + search_paths.append(os.environ.get('PATH', '')) + search_path = os.pathsep.join(search_paths) + binary_path = shutil.which(binary_name, path=search_path) + if binary_path is not None: + # So for example, we get '/bin/gcc' instead of '/usr/../bin/gcc'. + binary_path = os.path.normpath(binary_path) + return binary_path def find_toolchain(compiler, tools_dir): if compiler == 'msvc':
Index: lldb/test/Shell/helper/build.py =================================================================== --- lldb/test/Shell/helper/build.py +++ lldb/test/Shell/helper/build.py @@ -4,6 +4,7 @@ import argparse import os +import shutil import signal import subprocess import sys @@ -170,16 +171,14 @@ print(' {0} = {1}'.format(e, formatted_value)) def find_executable(binary_name, search_paths): - if sys.platform == 'win32': - binary_name = binary_name + '.exe' - - search_paths = os.pathsep.join(search_paths) - paths = search_paths + os.pathsep + os.environ.get('PATH', '') - for path in paths.split(os.pathsep): - p = os.path.join(path, binary_name) - if os.path.exists(p) and not os.path.isdir(p): - return os.path.normpath(p) - return None + # shutil.which will ignore PATH if given a path argument, we want to include it. + search_paths.append(os.environ.get('PATH', '')) + search_path = os.pathsep.join(search_paths) + binary_path = shutil.which(binary_name, path=search_path) + if binary_path is not None: + # So for example, we get '/bin/gcc' instead of '/usr/../bin/gcc'. + binary_path = os.path.normpath(binary_path) + return binary_path def find_toolchain(compiler, tools_dir): if compiler == 'msvc':
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits