[U-Boot] [PATCH] test/py: ensure a log section exists for skipped tests

From: Stephen Warren swarren@nvidia.com
In pytest 3, runtestprotocol() may not call pytest_runtest_setup() if the test is skipped. That call is required to create a section for the test in the log file. If this is skipped, the call to log.end_section() at the tail of pytest_runtest_protocol() will throw an exception. This patch ensures that a log section always exists, both to avoid the exception and to ensure that a consistently structured log file is always created.
Cc: Stefan Brüns stefan.bruens@rwth-aachen.de Reported-by: Stefan Brüns stefan.bruens@rwth-aachen.de Signed-off-by: Stephen Warren swarren@nvidia.com --- test/py/conftest.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/test/py/conftest.py b/test/py/conftest.py index 5b3a92316bbf..1f15e3e33dcf 100644 --- a/test/py/conftest.py +++ b/test/py/conftest.py @@ -431,6 +431,9 @@ def setup_buildconfigspec(item): if not ubconfig.buildconfig.get('config_' + option.lower(), None): pytest.skip('.config feature not enabled')
+def start_test_section(item): + anchors[item.name] = log.start_section(item.name) + def pytest_runtest_setup(item): """pytest hook: Configure (set up) a test item.
@@ -444,7 +447,7 @@ def pytest_runtest_setup(item): Nothing. """
- anchors[item.name] = log.start_section(item.name) + start_test_section(item) setup_boardspec(item) setup_buildconfigspec(item)
@@ -464,6 +467,14 @@ def pytest_runtest_protocol(item, nextitem):
reports = runtestprotocol(item, nextitem=nextitem)
+ # In pytest 3, runtestprotocol() may not call pytest_runtest_setup() if + # the test is skipped. That call is required to create the test's section + # in the log file. The call to log.end_section() requires that the log + # contain a section for this test. Create a section for the test if it + # doesn't already exist. + if not item.name in anchors: + start_test_section(item) + failure_cleanup = False test_list = tests_passed msg = 'OK'

On Mon, Oct 17, 2016 at 05:25:52PM -0600, Stephen Warren wrote:
From: Stephen Warren swarren@nvidia.com
In pytest 3, runtestprotocol() may not call pytest_runtest_setup() if the test is skipped. That call is required to create a section for the test in the log file. If this is skipped, the call to log.end_section() at the tail of pytest_runtest_protocol() will throw an exception. This patch ensures that a log section always exists, both to avoid the exception and to ensure that a consistently structured log file is always created.
Cc: Stefan Brüns stefan.bruens@rwth-aachen.de Reported-by: Stefan Brüns stefan.bruens@rwth-aachen.de Signed-off-by: Stephen Warren swarren@nvidia.com
travis-ci will give a failing setup without this patch and I can confirm it's better with this now.
Tested-by: Tom Rini trini@konsulko.com

On Mon, Oct 17, 2016 at 05:25:52PM -0600, Stephen Warren wrote:
From: Stephen Warren swarren@nvidia.com
In pytest 3, runtestprotocol() may not call pytest_runtest_setup() if the test is skipped. That call is required to create a section for the test in the log file. If this is skipped, the call to log.end_section() at the tail of pytest_runtest_protocol() will throw an exception. This patch ensures that a log section always exists, both to avoid the exception and to ensure that a consistently structured log file is always created.
Cc: Stefan Brüns stefan.bruens@rwth-aachen.de Reported-by: Stefan Brüns stefan.bruens@rwth-aachen.de Signed-off-by: Stephen Warren swarren@nvidia.com Tested-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!
participants (2)
-
Stephen Warren
-
Tom Rini