From a10e09e09196a881c8f99edeef0208abdc7e015d Mon Sep 17 00:00:00 2001 From: Matthew Ballance Date: Sun, 22 Sep 2024 22:38:12 +0000 Subject: [PATCH] 0.1.4 - Update XML writer to properly emit ignore and illegal bins - Update XML reader to properly read crossExpr elements Signed-off-by: Matthew Ballance --- doc/Changelog.md | 4 ++++ setup.py | 2 +- src/ucis/xml/xml_reader.py | 4 ++-- src/ucis/xml/xml_writer.py | 8 +++++--- ve/unit/test_merge.py | 20 ++++++++++++++++++++ 5 files changed, 32 insertions(+), 6 deletions(-) diff --git a/doc/Changelog.md b/doc/Changelog.md index f41643a..63afdcf 100644 --- a/doc/Changelog.md +++ b/doc/Changelog.md @@ -1,4 +1,8 @@ +## 0.1.4 +- Update XML writer to properly emit ignore and illegal bins +- Update XML reader to properly read crossExpr elements + ## 0.1.3 - Adjust XML reader to reconstruct type coverage based on instance coverage saved in the UCIS XML file diff --git a/setup.py b/setup.py index 66aabf7..b2ab31f 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ import os from setuptools import setup, find_namespace_packages -version="0.1.3" +version="0.1.4" if "BUILD_NUM" in os.environ.keys(): version = version + "." + os.environ["BUILD_NUM"] diff --git a/src/ucis/xml/xml_reader.py b/src/ucis/xml/xml_reader.py index 512392f..102cc1e 100644 --- a/src/ucis/xml/xml_reader.py +++ b/src/ucis/xml/xml_reader.py @@ -230,8 +230,8 @@ def readCovergroup(self, cg_t, cg_l): if cp_name not in cr_m.keys(): cp_l = [] - crossExpr = next(cr_e.iter("crossExpr")) - for cp_n in crossExpr.text.split(','): + for crossExpr in cr_e.iter("crossExpr"): + cp_n = crossExpr.text.strip() logging.debug("cp_n=\"" + cp_n + "\"") if cp_n in cp_m.keys(): cp_l.append(cp_m[cp_n][0]) diff --git a/src/ucis/xml/xml_writer.py b/src/ucis/xml/xml_writer.py index 2877abb..722670a 100644 --- a/src/ucis/xml/xml_writer.py +++ b/src/ucis/xml/xml_writer.py @@ -223,7 +223,8 @@ def write_coverpoint(self, cgInstElem, cp : Coverpoint): self.write_options(cpElem, cp) - self.write_coverpoint_bins(cpElem, cp.coverItems(CoverTypeT.CVGBIN)) + self.write_coverpoint_bins(cpElem, cp.coverItems( + CoverTypeT.CVGBIN|CoverTypeT.IGNOREBIN|CoverTypeT.ILLEGALBIN)) def write_coverpoint_bins(self, cpElem, coveritems : Iterator[CoverIndex]): # TODO: should probably organize bins into a structure that fits more nicely into the interchage format @@ -232,7 +233,7 @@ def write_coverpoint_bins(self, cpElem, coveritems : Iterator[CoverIndex]): cov_data = cp_bin.getCoverData() cpBinElem = self.mkElem(cpElem, "coverpointBin") self.setAttr(cpBinElem, "name", cp_bin.getName()) - + if cp_bin.data.type == CoverTypeT.CVGBIN: self.setAttr(cpBinElem, "type", "bins") elif cp_bin.data.type == CoverTypeT.IGNOREBIN: @@ -268,7 +269,8 @@ def write_cross(self, cgInstElem, cr): crossExpr = self.mkElem(crossElem, "crossExpr") crossExpr.text = cr.getIthCrossedCoverpoint(i).getScopeName() - self.write_cross_bins(crossElem, cr.coverItems(CoverTypeT.CVGBIN)) + self.write_cross_bins(crossElem, cr.coverItems( + CoverTypeT.CVGBIN|CoverTypeT.IGNOREBIN|CoverTypeT.ILLEGALBIN)) def write_cross_bins(self, crossElem, coveritems : Iterator[CoverIndex]): diff --git a/ve/unit/test_merge.py b/ve/unit/test_merge.py index 02b22af..009fdf5 100644 --- a/ve/unit/test_merge.py +++ b/ve/unit/test_merge.py @@ -486,8 +486,28 @@ def test_1db_2ci_2cp_1cr(self): dst_db = MemFactory.create() + from ucis.xml.xml_writer import XmlWriter + from ucis.xml.xml_reader import XmlReader + from io import StringIO + + merger = DbMerger() merger.merge(dst_db, [src_db]) + + # writer = XmlWriter() + # cov = StringIO() + # writer.write(cov, dst_db) + # print("Result:\n%s\n" % cov.getvalue()) + # reader = XmlReader() + # dst_db_p = reader.read(StringIO(cov.getvalue())) + + # from ucis.report.text_coverage_report_formatter import TextCoverageReportFormatter + + # rpt_p = CoverageReportBuilder.build(dst_db_p) + # rpt_s_p = StringIO() + # rpt_fmt = TextCoverageReportFormatter(rpt_p, rpt_s_p) + # rpt_fmt.report() + # print("Final report:\n%s\n" % rpt_s_p.getvalue()) rpt = CoverageReportBuilder.build(dst_db)