zturner added inline comments.
================
Comment at: packages/Python/lldbsuite/test/lldbtest.py:2230-2233
+ # In Python 2, communicate sends byte strings. In Python 3,
communicate sends bytes.
+ # If we got a string (and not a byte string), encode it before sending.
+ if isinstance(output, str) and not isinstance(output, bytes):
+ output = output.encode()
----------------
Ok I had to stare at this for a long time to figure out what was going on. I
think you need to update the comment here, because it makes it sounds like
`output` is the result of a `Popen.communicate`. But `output` is the result of
a `debugger.HandleCommand()`.
I think we should actually just leave this the way it was and fix it in the
call to `Popen` (see below)
================
Comment at: packages/Python/lldbsuite/test/lldbtest.py:2247-2249
subproc = Popen(filecheck_args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
cmd_stdout, cmd_stderr = subproc.communicate(input=output)
cmd_status = subproc.returncode
----------------
If I'm not mistaken, Python 3 can accept `stdin` as `bytes` or `string`, and
either will work, it depends on the value of `universal_newlines`, and `stdout`
will be in whatever format `stdin` was in. If we pass
`universal_newlines=True`, then it will expect a `string` and output a
`string`, otherwise it expects a `bytes` and output a `bytes`. Given that
`FileCheck` is supposed to operate on textual data and not binary data, perhaps
we should be doing that here?
Repository:
rLLDB LLDB
https://reviews.llvm.org/D53166
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits