[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v3] python: Use io.StringIO
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v3] python: Use io.StringIO |
Date: |
Thu, 11 Oct 2018 16:44:52 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0 |
On 11/10/2018 16:01, Markus Armbruster wrote:
> Paolo Bonzini <address@hidden> writes:
>
>> On 11/10/2018 13:33, Kevin Wolf wrote:
>>> 045 1s ... [13:31:47] [13:31:47] [failed, exit status 1] - output
>>> mismatch (see 045.out.bad)
>>> --- /home/kwolf/source/qemu/tests/qemu-iotests/045.out 2017-01-24
>>> 14:49:48.000000000 +0100
>>> +++ /home/kwolf/source/qemu/tests/qemu-iotests/045.out.bad 2018-10-11
>>> 13:31:47.266876850 +0200
>>> @@ -1,5 +1,26 @@
>>> -...........
>>> -----------------------------------------------------------------------
>>> -Ran 11 tests
>>> -
>>> -OK
>>> +Traceback (most recent call last):
>>> + File "045", line 178, in <module>
>>> + iotests.main(supported_fmts=['raw'])
>>> + File "/home/kwolf/source/qemu/tests/qemu-iotests/iotests.py", line 698,
>>> in main
>>> + unittest.main(testRunner=MyTestRunner)
>>> + File "/usr/lib64/python2.7/unittest/main.py", line 95, in __init__
>>> + self.runTests()
>>> + File "/usr/lib64/python2.7/unittest/main.py", line 232, in runTests
>>> + self.result = testRunner.run(self.test)
>>> + File "/usr/lib64/python2.7/unittest/runner.py", line 151, in run
>>> + test(result)
>>> + File "/usr/lib64/python2.7/unittest/suite.py", line 70, in __call__
>>> + return self.run(*args, **kwds)
>>> + File "/usr/lib64/python2.7/unittest/suite.py", line 108, in run
>>> + test(result)
>>> + File "/usr/lib64/python2.7/unittest/suite.py", line 70, in __call__
>>> + return self.run(*args, **kwds)
>>> + File "/usr/lib64/python2.7/unittest/suite.py", line 108, in run
>>> + test(result)
>>> + File "/usr/lib64/python2.7/unittest/case.py", line 431, in __call__
>>> + return self.run(*args, **kwds)
>>> + File "/usr/lib64/python2.7/unittest/case.py", line 406, in run
>>> + result.addSuccess(self)
>>> + File "/usr/lib64/python2.7/unittest/runner.py", line 62, in addSuccess
>>> + self.stream.write('.')
>>> +TypeError: unicode argument expected, got 'str'
>>> Failures: 045
>>> Failed 1 of 1 tests
>>>
>>> $ /usr/bin/env python --version
>>> Python 2.7.15
>>
>> Indeed, io.StringIO exists in Python 2.7 but it's different! If Python
>> 2 code is not unicode-friendly (it almost never is) it should use
>> StringIO.StringIO, for example 'six' defines
>>
>> six.StringIO:
>> This is an fake file object for textual data. It’s an alias for
>> StringIO.StringIO in Python 2 and io.StringIO in Python 3.
>>
>> six.BytesIO:
>> This is a fake file object for binary data. In Python 2, it’s an
>> alias for StringIO.StringIO, but in Python 3, it’s an alias for
>> io.BytesIO.
o_O
Thanks for the clarification.
I'll let people who actually do understand Python fix this.
>>
>> So the solution seems to be a try/except (and then, better move the
>> "from X import StringIO" to the top of the file then, rather than
>> keeping it in def main).
>>
>> Paolo
>
> I think we need to invest more resources in Python 2/3 compatiblity, or
> else we'll miss our hard deadline of January 1, 2020.
>
> https://pythonclock.org/
Some distributions already dropped Python2, so you need to specifically
install it to run block tests (other tests work with Python3).
See this thread:
https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg06461.html
https://lists.gnu.org/archive/html/qemu-devel/2017-08/msg06510.html
Regards,
Phil.