Skip to content

Commit

Permalink
Add issue count methods (#7)
Browse files Browse the repository at this point in the history
Signed-off-by: patrickpa <[email protected]>
  • Loading branch information
patrickpa authored Jun 7, 2024
1 parent 71ab4ad commit e671003
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 6 deletions.
46 changes: 44 additions & 2 deletions qc_baselib/result.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@
DEFAULT_REPORT_VERSION = "0.0.1"


class IDManager:
_id = -1

def get_next_free_id(self):
self._id += 1
return self._id


class Result:
"""
Quality framework `Result` schema class.
Expand Down Expand Up @@ -56,6 +64,7 @@ def __init__(
self,
):
self._report_results: Union[None, result.CheckerResults] = None
self._id_manager = IDManager()

def load_from_file(self, xml_file_path: str, override: bool = False) -> None:
if self._report_results is not None and not override:
Expand Down Expand Up @@ -176,10 +185,15 @@ def register_issue(
self,
checker_bundle_name: str,
checker_id: str,
issue_id: int,
description: str,
level: IssueSeverity,
) -> None:
) -> int:
"""
Issue will be registered to checker and the generated issue id will be
returned.
"""
issue_id = self._id_manager.get_next_free_id()

issue = result.IssueType(
issue_id=issue_id, description=description, level=level
)
Expand All @@ -190,6 +204,8 @@ def register_issue(

checker.issues.append(issue)

return issue_id

def add_file_location(
self,
checker_bundle_name: str,
Expand Down Expand Up @@ -293,3 +309,29 @@ def get_issues(
bundle = self._get_checker_bundle(checker_bundle_name=checker_bundle_name)
checker = self._get_checker(bundle=bundle, checker_id=checker_id)
return checker.issues

def get_checker_issue_count(self, checker_bundle_name: str, checker_id: str) -> int:
bundle = self._get_checker_bundle(checker_bundle_name=checker_bundle_name)
checker = self._get_checker(bundle=bundle, checker_id=checker_id)
return len(checker.issues)

def get_checker_bundle_issue_count(self, checker_bundle_name: str) -> int:
bundle = self._get_checker_bundle(checker_bundle_name=checker_bundle_name)

issue_count = 0

for checker in bundle.checkers:
issue_count += len(checker.issues)

return issue_count

def get_issue_count(self) -> int:
checker_bundle_names = self.get_checker_bundle_names()

issue_count = 0
for checker_bundle_name in checker_bundle_names:
issue_count += self.get_checker_bundle_issue_count(
checker_bundle_name=checker_bundle_name
)

return issue_count
59 changes: 55 additions & 4 deletions tests/test_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,18 +40,17 @@ def test_result_write() -> None:
summary="Executed evaluation",
)

result.register_issue(
issue_id = result.register_issue(
checker_bundle_name="TestBundle",
checker_id="TestChecker",
issue_id=0,
description="Issue found at odr",
level=IssueSeverity.INFORMATION,
)

result.add_file_location(
checker_bundle_name="TestBundle",
checker_id="TestChecker",
issue_id=0,
issue_id=issue_id,
row=1,
column=0,
file_type="odr",
Expand All @@ -60,7 +59,7 @@ def test_result_write() -> None:
result.add_xml_location(
checker_bundle_name="TestBundle",
checker_id="TestChecker",
issue_id=0,
issue_id=issue_id,
xpath="/foo/test/path",
description="Location for issue",
)
Expand Down Expand Up @@ -113,3 +112,55 @@ def test_result_issues_load(loaded_result: Result):
assert issues[0].description == "This is an information from the demo usecase"
assert issues[0].issue_id == 0
assert issues[0].level == IssueSeverity.INFORMATION


def test_result_issues_count(loaded_result: Result):
assert loaded_result.get_issue_count() == 1
assert (
loaded_result.get_checker_bundle_issue_count(
checker_bundle_name="DemoCheckerBundle"
)
== 1
)
assert (
loaded_result.get_checker_issue_count(
checker_bundle_name="DemoCheckerBundle", checker_id="exampleChecker"
)
== 1
)


def test_result_register_issue_id_generation() -> None:
result = Result()

result.register_checker_bundle(
name="TestBundle",
build_date="2024-05-31",
description="Example checker bundle",
version="0.0.1",
summary="Tested example checkers",
)

result.register_checker(
checker_bundle_name="TestBundle",
checker_id="TestChecker",
description="Test checker",
summary="Executed evaluation",
)

issue_id_0 = result.register_issue(
checker_bundle_name="TestBundle",
checker_id="TestChecker",
description="Issue found at odr",
level=IssueSeverity.INFORMATION,
)

issue_id_1 = result.register_issue(
checker_bundle_name="TestBundle",
checker_id="TestChecker",
description="Issue found at odr",
level=IssueSeverity.INFORMATION,
)

assert issue_id_0 != issue_id_1
assert issue_id_0 == issue_id_1 - 1

0 comments on commit e671003

Please sign in to comment.