[U-Boot] [PATCH 04/10] test/py: Automated conversion to Python 3

Heinrich Schuchardt xypron.glpk at gmx.de
Sat Oct 19 05:25:37 UTC 2019


On 10/18/19 10:53 PM, Tom Rini wrote:
> Use the 2to3 tool to perform numerous automatic conversions from Python
> 2 syntax to Python 3.  Also fix whitespace problems that Python 3
> catches that Python 2 did not.
>
> Signed-off-by: Tom Rini <trini at konsulko.com>

This patch breaks

./test/py/test.py --bd=qemu-arm64 --build-dir=. -k=test_efi_

For remediation see below.

> ---
>   test/py/conftest.py               |  9 ++--
>   test/py/multiplexed_log.py        |  4 +-
>   test/py/test.py                   |  4 +-
>   test/py/tests/test_fit.py         |  2 -
>   test/py/tests/test_fpga.py        | 46 +++++++++----------
>   test/py/tests/test_fs/conftest.py |  4 +-
>   test/py/tests/test_log.py         |  8 ++--
>   test/py/tests/test_mmc_wr.py      | 74 +++++++++++++++----------------
>   8 files changed, 71 insertions(+), 80 deletions(-)
>
> diff --git a/test/py/conftest.py b/test/py/conftest.py
> index 30c898b40a0d..5c19af1d5034 100644
> --- a/test/py/conftest.py
> +++ b/test/py/conftest.py
> @@ -19,13 +19,10 @@ import os.path
>   import pytest
>   from _pytest.runner import runtestprotocol
>   import re
> -import StringIO
> +import io
>   import sys
>
> -try:
> -    import configparser
> -except:
> -    import ConfigParser as configparser
> +import configparser
>
>   # Globals: The HTML log file, and the connection to the U-Boot console.
>   log = None
> @@ -169,7 +166,7 @@ def pytest_configure(config):
>
>           with open(dot_config, 'rt') as f:
>               ini_str = '[root]\n' + f.read()
> -            ini_sio = StringIO.StringIO(ini_str)
> +            ini_sio = io.StringIO(ini_str)

This results in an error

INTERNALERROR>   File "/home/user/u-boot/test/py/conftest.py", line 169,
in pytest_configure
INTERNALERROR>     ini_sio = io.StringIO(ini_str)
INTERNALERROR> TypeError: initial_value must be unicode or None, not str

-            ini_sio = io.StringIO(ini_str)
+            ini_sio = io.StringIO(ini_str.decode())

>               parser = configparser.RawConfigParser()
>               parser.readfp(ini_sio)
>               ubconfig.buildconfig.update(parser.items('root'))
> diff --git a/test/py/multiplexed_log.py b/test/py/multiplexed_log.py
> index 637a3bd257ba..de0aacc659b8 100644
> --- a/test/py/multiplexed_log.py
> +++ b/test/py/multiplexed_log.py
> @@ -5,8 +5,8 @@
>   # Generate an HTML-formatted log file containing multiple streams of data,
>   # each represented in a well-delineated/-structured fashion.
>
> -import cgi
>   import datetime
> +import html
>   import os.path
>   import shutil
>   import subprocess
> @@ -334,7 +334,7 @@ $(document).ready(function () {
>           data = data.replace(chr(13), '')
>           data = ''.join((ord(c) in self._nonprint) and ('%%%02x' % ord(c)) or
>                          c for c in data)
> -        data = cgi.escape(data)
> +        data = html.escape(data)
>           return data
>
>       def _terminate_stream(self):
> diff --git a/test/py/test.py b/test/py/test.py
> index a5140945d4b9..0ce1838833f6 100755
> --- a/test/py/test.py
> +++ b/test/py/test.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env python2
> +#!/usr/bin/env python3
>   # SPDX-License-Identifier: GPL-2.0
>
>   # Copyright (c) 2015 Stephen Warren
> @@ -7,8 +7,6 @@
>   # Wrapper script to invoke pytest with the directory name that contains the
>   # U-Boot tests.
>
> -from __future__ import print_function
> -
>   import os
>   import os.path
>   import sys
> diff --git a/test/py/tests/test_fit.py b/test/py/tests/test_fit.py
> index e3210ed43fa4..4922b9dcc664 100755
> --- a/test/py/tests/test_fit.py
> +++ b/test/py/tests/test_fit.py

Please, replace all occurrences of

-            print(base_fdt, file=fd)
+            fd.write(base_fdt)

in this file.

Together with the correction in test/py/conftest.py I now can run

./test/py/test.py --bd=qemu-arm64 --build-dir=. -k=test_efi_

using origin/master + patches 1-4.

Best regards

Heinrich

> @@ -3,8 +3,6 @@
>   #
>   # Sanity check of the FIT handling in U-Boot
>
> -from __future__ import print_function
> -
>   import os
>   import pytest
>   import struct
> diff --git a/test/py/tests/test_fpga.py b/test/py/tests/test_fpga.py
> index e3bb7b41c749..ca7ef8ea40d6 100644
> --- a/test/py/tests/test_fpga.py
> +++ b/test/py/tests/test_fpga.py
> @@ -175,29 +175,29 @@ def test_fpga_load_fail(u_boot_console):
>       f, dev, addr, bit, bit_size = load_file_from_var(u_boot_console, 'bitstream_load')
>
>       for cmd in ['dump', 'load', 'loadb']:
> -	# missing dev parameter
> -	expected = 'fpga: incorrect parameters passed'
> -	output = u_boot_console.run_command('fpga %s %x $filesize' % (cmd, addr))
> -	#assert expected in output
> -	assert expected_usage in output
> -
> -	# more parameters - 0 at the end
> -	expected = 'fpga: more parameters passed'
> -	output = u_boot_console.run_command('fpga %s %x %x $filesize 0' % (cmd, dev, addr))
> -	#assert expected in output
> -	assert expected_usage in output
> -
> -	# 0 address
> -	expected = 'fpga: zero fpga_data address'
> -	output = u_boot_console.run_command('fpga %s %x 0 $filesize' % (cmd, dev))
> -	#assert expected in output
> -	assert expected_usage in output
> -
> -	# 0 filesize
> -	expected = 'fpga: zero size'
> -	output = u_boot_console.run_command('fpga %s %x %x 0' % (cmd, dev, addr))
> -	#assert expected in output
> -	assert expected_usage in output
> +        # missing dev parameter
> +        expected = 'fpga: incorrect parameters passed'
> +        output = u_boot_console.run_command('fpga %s %x $filesize' % (cmd, addr))
> +        #assert expected in output
> +        assert expected_usage in output
> +
> +        # more parameters - 0 at the end
> +        expected = 'fpga: more parameters passed'
> +        output = u_boot_console.run_command('fpga %s %x %x $filesize 0' % (cmd, dev, addr))
> +        #assert expected in output
> +        assert expected_usage in output
> +
> +        # 0 address
> +        expected = 'fpga: zero fpga_data address'
> +        output = u_boot_console.run_command('fpga %s %x 0 $filesize' % (cmd, dev))
> +        #assert expected in output
> +        assert expected_usage in output
> +
> +        # 0 filesize
> +        expected = 'fpga: zero size'
> +        output = u_boot_console.run_command('fpga %s %x %x 0' % (cmd, dev, addr))
> +        #assert expected in output
> +        assert expected_usage in output
>
>   @pytest.mark.buildconfigspec('cmd_fpga')
>   @pytest.mark.buildconfigspec('cmd_echo')
> diff --git a/test/py/tests/test_fs/conftest.py b/test/py/tests/test_fs/conftest.py
> index 9324657d2160..354d17672fe4 100644
> --- a/test/py/tests/test_fs/conftest.py
> +++ b/test/py/tests/test_fs/conftest.py
> @@ -508,8 +508,8 @@ def fs_obj_unlink(request, u_boot_config):
>
>           # Test Case 2
>           check_call('mkdir %s/dir2' % mount_dir, shell=True)
> -	for i in range(0, 20):
> -	    check_call('mkdir %s/dir2/0123456789abcdef%02x'
> +        for i in range(0, 20):
> +            check_call('mkdir %s/dir2/0123456789abcdef%02x'
>                                       % (mount_dir, i), shell=True)
>
>           # Test Case 4
> diff --git a/test/py/tests/test_log.py b/test/py/tests/test_log.py
> index cb183444c6fc..75325fad61ad 100644
> --- a/test/py/tests/test_log.py
> +++ b/test/py/tests/test_log.py
> @@ -27,9 +27,9 @@ def test_log(u_boot_console):
>           """
>           for i in range(max_level):
>               if mask & 1:
> -                assert 'log_run() log %d' % i == lines.next()
> +                assert 'log_run() log %d' % i == next(lines)
>               if mask & 3:
> -                assert 'func() _log %d' % i == lines.next()
> +                assert 'func() _log %d' % i == next(lines)
>
>       def run_test(testnum):
>           """Run a particular test number (the 'log test' command)
> @@ -43,7 +43,7 @@ def test_log(u_boot_console):
>              output = u_boot_console.run_command('log test %d' % testnum)
>           split = output.replace('\r', '').splitlines()
>           lines = iter(split)
> -        assert 'test %d' % testnum == lines.next()
> +        assert 'test %d' % testnum == next(lines)
>           return lines
>
>       def test0():
> @@ -88,7 +88,7 @@ def test_log(u_boot_console):
>       def test10():
>           lines = run_test(10)
>           for i in range(7):
> -            assert 'log_test() level %d' % i == lines.next()
> +            assert 'log_test() level %d' % i == next(lines)
>
>       # TODO(sjg at chromium.org): Consider structuring this as separate tests
>       cons = u_boot_console
> diff --git a/test/py/tests/test_mmc_wr.py b/test/py/tests/test_mmc_wr.py
> index 8b18781eac74..2ce79f58e3b1 100644
> --- a/test/py/tests/test_mmc_wr.py
> +++ b/test/py/tests/test_mmc_wr.py
> @@ -65,41 +65,39 @@ def test_mmc_wr(u_boot_console, env__mmc_wr_config):
>
>
>       for i in range(test_iterations):
> -	# Generate random data
> -	cmd = 'random %s %x' % (src_addr, count_bytes)
> -	response = u_boot_console.run_command(cmd)
> -	good_response = '%d bytes filled with random data' % (count_bytes)
> -	assert good_response in response
> -
> -	# Select MMC device
> -	cmd = 'mmc dev %d' % devid
> -	if is_emmc:
> -		cmd += ' %d' % partid
> -	response = u_boot_console.run_command(cmd)
> -	assert 'no card present' not in response
> -	if is_emmc:
> -		partid_response = "(part %d)" % partid
> -	else:
> -		partid_response = ""
> -	good_response = 'mmc%d%s is current device' % (devid, partid_response)
> -	assert good_response in response
> -
> -	# Write data
> -	cmd = 'mmc write %s %x %x' % (src_addr, sector, count_sectors)
> -	response = u_boot_console.run_command(cmd)
> -	good_response = 'MMC write: dev # %d, block # %d, count %d ... %d blocks written: OK' % (
> -		devid, sector, count_sectors, count_sectors)
> -	assert good_response in response
> -
> -	# Read data
> -	cmd = 'mmc read %s %x %x' % (dst_addr, sector, count_sectors)
> -	response = u_boot_console.run_command(cmd)
> -	good_response = 'MMC read: dev # %d, block # %d, count %d ... %d blocks read: OK' % (
> -		devid, sector, count_sectors, count_sectors)
> -	assert good_response in response
> -
> -	# Compare src and dst data
> -	cmd = 'cmp.b %s %s %x' % (src_addr, dst_addr, count_bytes)
> -	response = u_boot_console.run_command(cmd)
> -	good_response = 'Total of %d byte(s) were the same' % (count_bytes)
> -	assert good_response in response
> +        # Generate random data
> +        cmd = 'random %s %x' % (src_addr, count_bytes)
> +        response = u_boot_console.run_command(cmd)
> +        good_response = '%d bytes filled with random data' % (count_bytes)
> +        assert good_response in response
> +
> +        # Select MMC device
> +        cmd = 'mmc dev %d' % devid
> +        if is_emmc:
> +            cmd += ' %d' % partid
> +        response = u_boot_console.run_command(cmd)
> +        assert 'no card present' not in response
> +        if is_emmc:
> +            partid_response = "(part %d)" % partid
> +        else:
> +            partid_response = ""
> +        good_response = 'mmc%d%s is current device' % (devid, partid_response)
> +        assert good_response in response
> +
> +        # Write data
> +        cmd = 'mmc write %s %x %x' % (src_addr, sector, count_sectors)
> +        response = u_boot_console.run_command(cmd)
> +        good_response = 'MMC write: dev # %d, block # %d, count %d ... %d blocks written: OK' % (devid, sector, count_sectors, count_sectors)
> +        assert good_response in response
> +
> +        # Read data
> +        cmd = 'mmc read %s %x %x' % (dst_addr, sector, count_sectors)
> +        response = u_boot_console.run_command(cmd)
> +        good_response = 'MMC read: dev # %d, block # %d, count %d ... %d blocks read: OK' % (devid, sector, count_sectors, count_sectors)
> +        assert good_response in response
> +
> +        # Compare src and dst data
> +        cmd = 'cmp.b %s %s %x' % (src_addr, dst_addr, count_bytes)
> +        response = u_boot_console.run_command(cmd)
> +        good_response = 'Total of %d byte(s) were the same' % (count_bytes)
> +        assert good_response in response
>



More information about the U-Boot mailing list