in pytest_azurepipelines.py [0:0]
def pytest_sessionfinish(session, exitstatus):
xmlpath = session.config.option.nunit_xmlpath
mode = "NUnit"
# This mirrors https://github.com/pytest-dev/pytest/blob/38adb23bd245329d26b36fd85a43aa9b3dd0406c/src/_pytest/junitxml.py#L368-L369
xmlabspath = os.path.normpath(
os.path.abspath(os.path.expanduser(os.path.expandvars(xmlpath)))
)
mountinfo = None
if not session.config.getoption("no_docker_discovery") and os.path.isfile('/.dockerenv'):
with io.open(
'/proc/1/mountinfo', 'rb',
) as fobj:
mountinfo = fobj.read()
mountinfo = mountinfo.decode(sys.getfilesystemencoding())
if mountinfo:
xmlabspath = apply_docker_mappings(mountinfo, xmlabspath)
# Set the run title in the UI to a configurable setting
description = session.config.option.azure_run_title.replace("'", "")
if not session.config.getoption("no_docker_discovery"):
print(
"##vso[results.publish type={2};runTitle='{1}';publishRunAttachments=true;]{0}".format(
xmlabspath, description, mode
)
)
else:
print("Skipping uploading of test results because --no-docker-discovery set.")
if exitstatus != 0 and session.testsfailed > 0 and not session.shouldfail:
print(
"##vso[task.logissue type=error;]{0} test(s) failed, {1} test(s) collected.".format(
session.testsfailed, session.testscollected
)
)
if not session.config.getoption("no_coverage_upload") and not session.config.getoption("no_docker_discovery") and session.config.pluginmanager.has_plugin("pytest_cov"):
covpath = os.path.normpath(
os.path.abspath(os.path.expanduser(os.path.expandvars(session.config.option.cov_report["xml"])))
)
reportdir = os.path.normpath(os.path.abspath(session.config.getoption("report_dir")))
if os.path.exists(covpath):
if mountinfo:
covpath = apply_docker_mappings(mountinfo, covpath)
reportdir = apply_docker_mappings(mountinfo, reportdir)
try_to_inline_css_into_each_html_report_file(reportdir)
print(
"##vso[codecoverage.publish codecoveragetool=Cobertura;summaryfile={0};reportdirectory={1};]".format(
covpath, reportdir
)
)
else:
print(
"##vso[task.logissue type=warning;]{0}".format(
"Coverage XML was not created, skipping upload."
)
)
else:
print("Skipping uploading of coverage data.")