From 6d8d1670365e466c6e285d1b09494d11aa7be64a Mon Sep 17 00:00:00 2001 From: Stanislav Levin Date: Apr 21 2020 11:24:50 +0000 Subject: ipatests: Specify Pytest XML report schema Pytest 5.2+ warns if tests XML report is generated but its format (schema) is not explicitly specified: ``` /root/.local/lib/python3/site-packages/_pytest/junitxml.py:417 /root/.local/lib/python3/site-packages/_pytest/junitxml.py:417: PytestDeprecationWarning: The 'junit_family' default value will change to 'xunit2' in pytest 6.0. Add 'junit_family=xunit1' to your pytest.ini file to keep the current format in future versions of pytest and silence this warning. _issue_warning_captured(deprecated.JUNIT_XML_DEFAULT_FAMILY, config.hook, 2) ``` For example, xunit2 is used by jenkins and Pytest strictly conforms its schema [0]. Pytest's xunit1, in turn, allows to attach user fields to report. The only known client of IPA tests results is Azure. Azure supports [1] JUnit, which is likely the same as Pytest's xunit1, while Azure's xUnit2 is actually xUnit.net v2. This means that Azure supports (in one form or another) Pytest's both xunit1 and xunit2 as JUnit. [0]: https://github.com/jenkinsci/xunit-plugin/blob/xunit-2.3.2/src/main/resources/org/jenkinsci/plugins/xunit/types/model/xsd/junit-10.xsd [1]: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/test/publish-test-results?view=azure-devops&tabs=yaml Fixes: https://pagure.io/freeipa/issue/8101 Signed-off-by: Stanislav Levin Reviewed-By: Sergey Orlov --- diff --git a/ipatests/ipa-run-tests b/ipatests/ipa-run-tests index c01a391..b645f38 100755 --- a/ipatests/ipa-run-tests +++ b/ipatests/ipa-run-tests @@ -55,6 +55,10 @@ if not has_option("confcutdir"): if not has_option("cache_dir"): sys.argv[1:1] = ["-o", 'cache_dir={}'.format(os.path.join(os.getcwd(), ".pytest_cache"))] +# Pytest 5.2 deprecation: The default value of junit_family option will change +# to xunit2 in pytest 6.0. Current XML scheme is xunit1. +if not has_option("junit_family"): + sys.argv[1:1] = ["-o", 'junit_family=xunit1'] pyt_args = [sys.executable, "-c", "import sys,pytest;sys.exit(pytest.main())"] + sys.argv[1:]