On 13.05.2016 00:00, Evgeny Kotkov wrote:
> Stefan Fuhrmann <stef...@apache.org> writes:
>
>>    TestHarness._run_test):  The log is binary data, so write byte strings
>>                             to it.
> [...]
>
>>      if self.opts.list_tests:
>> -      log.write('LISTING: %s\n' % progbase)
>> +      log.write(('LISTING: %s\n' % progbase).encode())
>>      else:
>> -      log.write('START: %s\n' % progbase)
>> +      log.write(('START: %s\n' % progbase).encode())
> Hm, do these log.write() calls always expect bytes?  I see that `log'
> can be set to two different values, as per run_tests.py:880:
>
>     if self.log:
>       log = self.log
>     else:
>       log = sys.stdout  # with --log-to-stdout
>
> And sys.stdout.write() works with strings, so this probably won't work
> if tests are run with the --log-to-stdout option.

I was thinking about that, yes. Instead of opening log files with
open(), then encoding everything written to them ... I believe it would
be better to open the files with codecs.open(). This should work for
expected results and such, too, I think, and would certainly make the
streams work consistently between Python 2 and Python 3.

-- Brane

Reply via email to