[PATCH] test/py: support pytest 6

Heinrich Schuchardt xypron.glpk at gmx.de
Sat Jan 30 23:19:54 CET 2021


Am 30. Januar 2021 22:05:44 MEZ schrieb Stephen Warren <swarren at wwwdotorg.org>:
>Two changes are needed to support pytest 6:
>
>1) The main entry point no longer allows command-line arguments to be
>supplied. Instead, we must modify sys.argv before calling the entry
>point. pytest 5.1.2 (from the current requirements.txt) supports either
>modifying sys.argv, or passing arguments, so is compatible with this
>change.
>
>2) The implementation of pytest_runtest_protocol() must call
>pytest_runtest_logstart() and pytest_runtest_logfinish(). This appears
>to
>be necessary even in pytest 5.1.2 judging by the default version of
>pytest_runtest_protocol(), but evidently some form of code
>reorganization in pytest only made this have a practical effect in the
>newer version. I'd previously been under the impression that 100% of
>the
>required work of pytest_runtest_protocol() was handled by the fact it
>called runtestprotocol() as its implementation. However, it appears
>that
>custom implementations do need to do a little more than this.
>
>Reported-by: Heinrich Schuchardt <xypron.glpk at gmx.de> (point 2)
>Signed-off-by: Stephen Warren <swarren at wwwdotorg.org>
>---
> test/py/conftest.py | 5 ++++-
> test/py/test.py     | 4 ++--
> 2 files changed, 6 insertions(+), 3 deletions(-)
>
>diff --git a/test/py/conftest.py b/test/py/conftest.py
>index dc92c0be32ee..7cacfcec26ef 100644
>--- a/test/py/conftest.py
>+++ b/test/py/conftest.py
>@@ -554,7 +554,10 @@ def pytest_runtest_protocol(item, nextitem):
>     """
> 
>     log.get_and_reset_warning()
>+    ihook = item.ihook
>+    ihook.pytest_runtest_logstart(nodeid=item.nodeid,
>location=item.location)
>     reports = runtestprotocol(item, nextitem=nextitem)
>+    ihook.pytest_runtest_logfinish(nodeid=item.nodeid,
>location=item.location)
>     was_warning = log.get_and_reset_warning()
> 
># In pytest 3, runtestprotocol() may not call pytest_runtest_setup() if
>@@ -623,4 +626,4 @@ def pytest_runtest_protocol(item, nextitem):
>     if failure_cleanup:
>         console.cleanup_spawn()
> 
>-    return reports
>+    return True # reports
>diff --git a/test/py/test.py b/test/py/test.py
>index bee88d96bc26..d5bea127ab47 100755
>--- a/test/py/test.py
>+++ b/test/py/test.py
>@@ -14,7 +14,7 @@ from pkg_resources import load_entry_point
> 
> # argv; py.test test_directory_name user-supplied-arguments
> args = [os.path.dirname(__file__) + '/tests']
>-args.extend(sys.argv)
>+sys.argv[1:1] = args
> 
> if __name__ == '__main__':
>-    sys.exit(load_entry_point('pytest', 'console_scripts',
>'pytest')(args))
>+    sys.exit(load_entry_point('pytest', 'console_scripts',
>'pytest')())

Your patch is not based on origin master. This line was already corrected. We should not use console_scripts. Cf.

https://github.com/trini/u-boot/blob/master/test/py/test.py#L20

Best regards

Heinrich



More information about the U-Boot mailing list