Always write the session file in UTF-8.
authorZachary Turner <zturner@google.com>
Mon, 1 Feb 2016 18:12:59 +0000 (18:12 +0000)
committerZachary Turner <zturner@google.com>
Mon, 1 Feb 2016 18:12:59 +0000 (18:12 +0000)
commite5a7990dbe8d5c45541a7d56b07d64d20b1fe002
tree25a3a48aa7ec972d745bb64b665c8da0c61ad744
parentf042c908b3039349f1cc6874a04a35860d52df9a
Always write the session file in UTF-8.

This patch attempts to solve the Python 2 / Python 3 incompatibilities by
introducing a new `encoded_file` abstraction that we use instead of
`io.open()`.  The problem with the builtin implementation of `io.open` is
that `read` and `write` accept and return `unicode` objects, which are not
always convenient to work with in Python 2.  We solve this by making
`encoded_file.open()` return the same object returned by `io.open()` but
with hooked `read()` and `write()` methods.  These hooked methods will
accept binary or text data, and conditionally convert what it gets to a
`unicode` object using the correct encoding.  When calling `read()` it
also does any conversion necessary to convert the output back into the
native `string` type of the running python version.

Differential Revision: http://reviews.llvm.org/D16736

llvm-svn: 259379
lldb/packages/Python/lldbsuite/support/encoded_file.py [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lang/cpp/char1632_t/TestChar1632T.py
lldb/packages/Python/lldbsuite/test/lldbtest.py
lldb/packages/Python/lldbsuite/test/tools/lldb-server/TestGDBRemoteMemoryRead.py