test/py: Manual python3 fixes

- Modern pytest is more visible in telling us about parameters that we
  had not described, so describe a few more.
- ConfigParser.readfp(...) is now configparser.read_file(...)
- As part of the "strings vs bytes" conversions in Python 3, we use the
  default encoding/decoding of utf-8 but in some places tell Python to
  replace problematic conversions rather than throw a fatal error.
- Fix a typo noticed while doing the above ("tot he" -> "to the").
- As suggested by Stephen, re-alphabetize the import list
- Per Heinrich, replace how we write contents in test_fit.py

Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Simon Glass <sjg@chromium.org> [on sandbox]
Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Tom Rini 2019-10-24 11:59:21 -04:00
parent fe1193e254
commit fd31fc172c
5 changed files with 19 additions and 12 deletions

View file

@ -13,17 +13,16 @@
# - Implementing custom pytest markers.
import atexit
import configparser
import errno
import io
import os
import os.path
import pytest
from _pytest.runner import runtestprotocol
import re
import io
from _pytest.runner import runtestprotocol
import sys
import configparser
# Globals: The HTML log file, and the connection to the U-Boot console.
log = None
console = None
@ -168,7 +167,7 @@ def pytest_configure(config):
ini_str = '[root]\n' + f.read()
ini_sio = io.StringIO(ini_str)
parser = configparser.RawConfigParser()
parser.readfp(ini_sio)
parser.read_file(ini_sio)
ubconfig.buildconfig.update(parser.items('root'))
ubconfig.test_py_dir = test_py_dir

View file

@ -51,7 +51,7 @@ class LogfileStream(object):
"""Write data to the log stream.
Args:
data: The data to write tot he file.
data: The data to write to the file.
implicit: Boolean indicating whether data actually appeared in the
stream, or was implicitly generated. A valid use-case is to
repeat a shell prompt at the start of each separate log
@ -64,7 +64,8 @@ class LogfileStream(object):
self.logfile.write(self, data, implicit)
if self.chained_file:
self.chained_file.write(data)
# Chained file is console, convert things a little
self.chained_file.write((data.encode('ascii', 'replace')).decode())
def flush(self):
"""Flush the log stream, to ensure correct log interleaving.
@ -136,6 +137,10 @@ class RunAndLog(object):
p = subprocess.Popen(cmd, cwd=cwd,
stdin=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
(stdout, stderr) = p.communicate()
if stdout is not None:
stdout = stdout.decode('utf-8')
if stderr is not None:
stderr = stderr.decode('utf-8')
output = ''
if stdout:
if stderr:
@ -215,7 +220,7 @@ class Logfile(object):
Nothing.
"""
self.f = open(fn, 'wt')
self.f = open(fn, 'wt', encoding='utf-8')
self.last_stream = None
self.blocks = []
self.cur_evt = 1

View file

@ -8,3 +8,6 @@
markers =
boardspec: U-Boot: Describes the set of boards a test can/can't run on.
buildconfigspec: U-Boot: Describes Kconfig/config-header constraints.
notbuildconfigspec: U-Boot: Describes required disabled Kconfig options.
requiredtool: U-Boot: Required host tools for a test.
slow: U-Boot: Specific test will run slowly.

View file

@ -153,7 +153,7 @@ def test_fit(u_boot_console):
src = make_fname('u-boot.dts')
dtb = make_fname('u-boot.dtb')
with open(src, 'w') as fd:
print(base_fdt, file=fd)
fd.write(base_fdt)
util.run_and_log(cons, ['dtc', src, '-O', 'dtb', '-o', dtb])
return dtb
@ -186,7 +186,7 @@ def test_fit(u_boot_console):
its = make_its(params)
util.run_and_log(cons, [mkimage, '-f', its, fit])
with open(make_fname('u-boot.dts'), 'w') as fd:
print(base_fdt, file=fd)
fd.write(base_fdt)
return fit
def make_kernel(filename, text):

View file

@ -113,7 +113,7 @@ class Spawn(object):
Nothing.
"""
os.write(self.fd, data)
os.write(self.fd, data.encode(errors='replace'))
def expect(self, patterns):
"""Wait for the sub-process to emit specific data.
@ -171,7 +171,7 @@ class Spawn(object):
events = self.poll.poll(poll_maxwait)
if not events:
raise Timeout()
c = os.read(self.fd, 1024)
c = os.read(self.fd, 1024).decode(errors='replace')
if not c:
raise EOFError()
if self.logfile_read: