From: Max Reitz <mreitz@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>, Cleber Rosa <crosa@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org,
Kevin Wolf <kwolf@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 8/9] iotests: Modify imports for Python 3
Date: Fri, 19 Oct 2018 11:25:19 +0200 [thread overview]
Message-ID: <342ed2ef-989a-28c7-99fc-1e964607dec5@redhat.com> (raw)
In-Reply-To: <20181016001215.GL31060@habkost.net>
[-- Attachment #1: Type: text/plain, Size: 2496 bytes --]
On 16.10.18 02:12, Eduardo Habkost wrote:
> On Mon, Oct 15, 2018 at 08:05:02PM -0400, Cleber Rosa wrote:
>>
>>
>> On 10/15/18 5:17 PM, Eduardo Habkost wrote:
>>> On Mon, Oct 15, 2018 at 04:14:52PM +0200, Max Reitz wrote:
>>>> There are two imports that need to be modified when running the iotests
>>>> under Python 3: One is StringIO, which no longer exists; instead, the
>>>> StringIO class comes from the io module, so import it from there. The
>>>> other is the ConfigParser, which has just been renamed to configparser.
>>>>
>>>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>>>> ---
>>>> tests/qemu-iotests/iotests.py | 8 ++++++--
>>>> tests/qemu-iotests/nbd-fault-injector.py | 7 +++++--
>>>> 2 files changed, 11 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
>>>> index 7ca94e9278..a64ea90fb4 100644
>>>> --- a/tests/qemu-iotests/iotests.py
>>>> +++ b/tests/qemu-iotests/iotests.py
>>>> @@ -683,13 +683,17 @@ def main(supported_fmts=[], supported_oses=['linux'], supported_cache_modes=[],
>>>>
>>>> # We need to filter out the time taken from the output so that qemu-iotest
>>>> # can reliably diff the results against master output.
>>>> - import StringIO
>>>> + if sys.version_info.major >= 3:
>>>> + from io import StringIO
>>>> + else:
>>>> + from StringIO import StringIO
>>>
>>> Considering that io.StringIO exists on Python 2.7, a comment
>>> explaining why exactly it doesn't work would be nice.
Oh, it does exist? I didn't know. O:-)
So I suppose it's because the test runner emits just normal strings,
which in 2.x are byte strings; but io's StringIO always expects Unicode
strings. StringIO, OTOH, accepts both (and returns Unicode strings once
you put a Unicode string into it).
>> Another possibility, that I find self explanatory:
>>
>> import io
>>
>> if sys.version_info.major >= 3:
>> output = io.StringIO()
>> else:
>> output = io.BytesIO()
>
> Looks nice and clean.
>
> But I'm not sure all output sent to `output` when running with
> Python 2 will be byte strings. What if `unittest.TextTestRunner`
> tries to write unicode strings to `output`?
Hm. It doesn't look this way to me in practice. And considering that
it only really prints a test summary, I don't think there are edge cases
where it behaves differently.
So I think using BytesIO() in 2.x is better.
Max
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2018-10-19 9:25 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-15 14:14 [Qemu-devel] [PATCH 0/9] iotests: Make them work for both Python 2 and 3 Max Reitz
2018-10-15 14:14 ` [Qemu-devel] [PATCH 1/9] iotests: Make nbd-fault-injector flush Max Reitz
2018-10-15 19:42 ` Eduardo Habkost
2018-10-15 20:24 ` Cleber Rosa
2018-10-16 18:07 ` Eric Blake
2018-10-19 9:48 ` Max Reitz
2018-10-19 14:21 ` Eric Blake
2018-10-15 14:14 ` [Qemu-devel] [PATCH 2/9] iotests: Flush in iotests.py's QemuIoInteractive Max Reitz
2018-10-15 19:43 ` Eduardo Habkost
2018-10-15 20:49 ` Cleber Rosa
2018-10-15 14:14 ` [Qemu-devel] [PATCH 3/9] iotests: Use Python byte strings where appropriate Max Reitz
2018-10-15 19:53 ` Eduardo Habkost
2018-10-19 8:46 ` Max Reitz
2018-10-15 22:08 ` Philippe Mathieu-Daudé
2018-10-15 14:14 ` [Qemu-devel] [PATCH 4/9] iotests: Use // for Python integer division Max Reitz
2018-10-15 19:54 ` Eduardo Habkost
2018-10-15 21:13 ` Cleber Rosa
2018-10-19 9:06 ` Max Reitz
2018-10-15 14:14 ` [Qemu-devel] [PATCH 5/9] iotests: Different iterator behavior in Python 3 Max Reitz
2018-10-15 20:07 ` Eduardo Habkost
2018-10-19 8:52 ` Max Reitz
2018-10-15 22:39 ` Cleber Rosa
2018-10-19 9:42 ` Max Reitz
2018-10-15 14:14 ` [Qemu-devel] [PATCH 6/9] iotests: Explicitly inherit FDs in Python Max Reitz
2018-10-15 20:30 ` Eduardo Habkost
2018-10-19 9:03 ` Max Reitz
2018-10-15 23:18 ` Cleber Rosa
2018-10-19 9:43 ` Max Reitz
2018-10-15 14:14 ` [Qemu-devel] [PATCH 7/9] iotests: 'new' module replacement in 169 Max Reitz
2018-10-15 21:13 ` Eduardo Habkost
2018-10-15 23:38 ` Cleber Rosa
2018-10-15 23:57 ` Eduardo Habkost
2018-10-16 1:01 ` Cleber Rosa
2018-10-19 9:46 ` Max Reitz
2018-10-19 14:18 ` Eduardo Habkost
2018-10-15 14:14 ` [Qemu-devel] [PATCH 8/9] iotests: Modify imports for Python 3 Max Reitz
2018-10-15 18:59 ` Cleber Rosa
2018-10-15 20:15 ` Eduardo Habkost
2018-10-19 8:44 ` Max Reitz
2018-10-15 21:17 ` Eduardo Habkost
2018-10-16 0:05 ` Cleber Rosa
2018-10-16 0:12 ` Eduardo Habkost
2018-10-19 9:25 ` Max Reitz [this message]
2018-10-15 14:14 ` [Qemu-devel] [PATCH 9/9] iotests: Unify log outputs between Python 2 and 3 Max Reitz
2018-10-15 22:26 ` Eduardo Habkost
2018-10-19 9:33 ` Max Reitz
2018-10-15 22:19 ` [Qemu-devel] [PATCH 0/9] iotests: Make them work for both " Philippe Mathieu-Daudé
2018-10-19 9:08 ` Max Reitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=342ed2ef-989a-28c7-99fc-1e964607dec5@redhat.com \
--to=mreitz@redhat.com \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).