forked from OSchip/llvm-project
[LIT] Make util.executeCommand python3 friendly
Summary: The parameter `input` to `subprocess.Popen.communicate(...)` must be an object of type `bytes` . This is strictly enforced in python3. This patch (1) allows `to_bytes` to be safely called redundantly. (2) Explicitly convert `input` within `executeCommand`. This allows for usages like `executeCommand(['clang++', '-'], input='int main() {}\n')`. Reviewers: ddunbar, BinaryKhaos, modocache, dim, EricWF Reviewed By: EricWF Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D28736 llvm-svn: 292308
This commit is contained in:
parent
9c46450dbb
commit
f744e7e15a
|
@ -10,6 +10,8 @@ import threading
|
|||
|
||||
def to_bytes(str):
|
||||
# Encode to UTF-8 to get binary data.
|
||||
if isinstance(str, bytes):
|
||||
return str
|
||||
return str.encode('utf-8')
|
||||
|
||||
def to_string(bytes):
|
||||
|
@ -200,6 +202,8 @@ def executeCommand(command, cwd=None, env=None, input=None, timeout=0):
|
|||
If the timeout is hit an ``ExecuteCommandTimeoutException``
|
||||
is raised.
|
||||
"""
|
||||
if input is not None:
|
||||
input = to_bytes(input)
|
||||
p = subprocess.Popen(command, cwd=cwd,
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
|
|
Loading…
Reference in New Issue