[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 3/9] iotests: Use Python byte strings where appr
From: |
Max Reitz |
Subject: |
Re: [Qemu-block] [PATCH 3/9] iotests: Use Python byte strings where appropriate |
Date: |
Fri, 19 Oct 2018 10:46:53 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0 |
On 15.10.18 21:53, Eduardo Habkost wrote:
> On Mon, Oct 15, 2018 at 04:14:47PM +0200, Max Reitz wrote:
>> Since byte strings are no longer the default in Python 3, we have to
>> explicitly use them where we need to, which is mostly when working with
>> structures. It also means that we need to open a file in binary mode
>> when we want to use structures.
>>
>> On the other hand, we have to accomodate for the fact that some
>> functions (still) work with byte strings but we want to use unicode
>> strings (in Python 3 at least, and it does not matter in Python 2).
>> This includes base64 encoding, but it is most notable when working with
>> the subprocess module: Either we set univeral_newlines to True so that
>> the default streams are opened in text mode (hence this parameter is
>> aliased as "text" as of 3.7), or, if that is not possible, we have to
>> decode the output to a normal string.
>>
>> Signed-off-by: Max Reitz <address@hidden>
> [...]
>> diff --git a/tests/qemu-iotests/149 b/tests/qemu-iotests/149
>> index 9e0cad76f9..1225334cb8 100755
>> --- a/tests/qemu-iotests/149
>> +++ b/tests/qemu-iotests/149
>> @@ -79,7 +79,7 @@ class LUKSConfig(object):
>>
>> def first_password_base64(self):
>> (pw, slot) = self.first_password()
>> - return base64.b64encode(pw)
>> + return base64.b64encode(pw.encode('ascii')).decode('ascii')
>
> Would we want to have a test case for non-ascii passwords in the
> future? In that case you would probably need to make
> self.passwords[] contain byte strings instead of text.
I remember someone once providing a non-ASCII initial password to some
system for me. I remember the system was running Windows, and I was
running Linux, so the system expected ISO-8859-1, while I was sending UTF-8.
The moral of the story is that you probably don't want non-ASCII
passwords. And if we do want to test them, well, we'll need to decide
on an encoding then (or use byte strings, as you suggest).
> In either case, using 'ascii' as the encoding everywhere will
> ensure the code will not try to be too smart about string
> encodings if that happens. I like that.
>
> Reviewed-by: Eduardo Habkost <address@hidden>
Thanks for reviewing!
Max
signature.asc
Description: OpenPGP digital signature
- [Qemu-block] [PATCH 2/9] iotests: Flush in iotests.py's QemuIoInteractive, (continued)
- [Qemu-block] [PATCH 2/9] iotests: Flush in iotests.py's QemuIoInteractive, Max Reitz, 2018/10/15
- [Qemu-block] [PATCH 5/9] iotests: Different iterator behavior in Python 3, Max Reitz, 2018/10/15
- [Qemu-block] [PATCH 3/9] iotests: Use Python byte strings where appropriate, Max Reitz, 2018/10/15
- [Qemu-block] [PATCH 4/9] iotests: Use // for Python integer division, Max Reitz, 2018/10/15
- [Qemu-block] [PATCH 6/9] iotests: Explicitly inherit FDs in Python, Max Reitz, 2018/10/15