qemu-block
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]