Skip to content

Commit ba3faa8

Browse files
committed
BaseTools/Plugin/HostBasedUnitTestRunner: Merge clang coverage files
For clang build, enable to generate coverage file under Build folder to merge coverage files of all module. Signed-off-by: Cosmo Lai <cosmo.lai@intel.com>
1 parent 7410754 commit ba3faa8

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,25 @@ def gen_code_coverage_clang(self, thebuilder):
272272
if ret != 0:
273273
logging.error("UnitTest Coverage: Failed generate filtered coverage XML.")
274274
return 1
275-
# Merge all XML files
275+
# Merge package coverage XML files
276276
ret = self.merge_cobertura_xml_files([f"{testFile}.coverage.xml" for testFile in testList], mergedCoverageXml)
277+
if ret != 0:
278+
logging.error("UnitTest Coverage: Failed to merge package coverage XML files.")
279+
return 1
280+
281+
workspace = thebuilder.env.GetValue("WORKSPACE")
282+
allCoverageXml = os.path.join(workspace, 'Build', 'coverage.xml')
283+
testCoverageList = glob.glob(os.path.join(workspace, 'Build', "**", "*.coverage.xml"), recursive=True)
284+
285+
# Merge all coverage XML files
286+
ret = self.merge_cobertura_xml_files(testCoverageList, allCoverageXml)
277287
if ret != 0:
278288
logging.error("UnitTest Coverage: Failed to merge coverage XML files.")
279289
return 1
290+
280291
return 0
281292

293+
282294
def merge_cobertura_xml_files(self, xml_file_list, output_file):
283295
"""
284296
Merge multiple Cobertura XML files into a single output file.
@@ -394,7 +406,7 @@ def gen_code_coverage_msvc(self, thebuilder):
394406
logging.error("UnitTest Coverage: Failed to collect coverage data.")
395407
return 1
396408

397-
# Generate and XML file if requested.by each package
409+
# Generate and XML file if requested by each package
398410
ret = RunCmd(
399411
"OpenCppCoverage",
400412
f"--export_type cobertura:{os.path.join(buildOutputBase, 'coverage.xml')} " +

0 commit comments

Comments
 (0)