From ba69831a0de8f604c49f0d2c0873e4a241809316 Mon Sep 17 00:00:00 2001 From: hoangtungdinh <11166240+hoangtungdinh@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:56:10 +0200 Subject: [PATCH] Add a function to check if checker contains issues Signed-off-by: hoangtungdinh <11166240+hoangtungdinh@users.noreply.github.com> --- qc_baselib/result.py | 8 +++++ tests/test_result.py | 75 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) diff --git a/qc_baselib/result.py b/qc_baselib/result.py index 9e8a672..135133b 100644 --- a/qc_baselib/result.py +++ b/qc_baselib/result.py @@ -568,3 +568,11 @@ def has_at_least_one_issue_from_rules(self, rule_uid_set: Set[str]) -> bool: return True return False + + def has_at_least_one_issue_from_checkers(self, check_id_set: Set[str]) -> bool: + for bundle in self._report_results.checker_bundles: + for checker in bundle.checkers: + if checker.checker_id in check_id_set and len(checker.issues) > 0: + return True + + return False diff --git a/tests/test_result.py b/tests/test_result.py index 2d2c7d2..9a44a0b 100644 --- a/tests/test_result.py +++ b/tests/test_result.py @@ -730,6 +730,81 @@ def test_has_at_least_one_issue_from_rules() -> None: assert result_report.has_at_least_one_issue_from_rules({}) == False +def test_has_at_least_one_issue_from_checkers() -> None: + result_report = Result() + + result_report.register_checker_bundle( + name="TestBundle", + build_date="2024-05-31", + description="Example checker bundle", + version="0.0.1", + summary="Tested example checkers", + ) + + result_report.register_checker( + checker_bundle_name="TestBundle", + checker_id="FirstChecker", + description="Test checker", + summary="Executed evaluation", + ) + + rule_uid_1 = result_report.register_rule( + checker_bundle_name="TestBundle", + checker_id="FirstChecker", + emanating_entity="test.com", + standard="qc", + definition_setting="1.0.0", + rule_full_name="first.rule", + ) + + result_report.register_issue( + checker_bundle_name="TestBundle", + checker_id="FirstChecker", + description="Issue found at odr", + level=IssueSeverity.INFORMATION, + rule_uid=rule_uid_1, + ) + + result_report.register_checker( + checker_bundle_name="TestBundle", + checker_id="SecondChecker", + description="Test checker", + summary="Executed evaluation", + ) + + result_report.register_rule( + checker_bundle_name="TestBundle", + checker_id="SecondChecker", + emanating_entity="test.com", + standard="qc", + definition_setting="1.0.0", + rule_full_name="second.rule", + ) + + assert ( + result_report.has_at_least_one_issue_from_checkers( + {"SecondChecker", "ThirdChecker"} + ) + == False + ) + + assert ( + result_report.has_at_least_one_issue_from_checkers( + {"FirstChecker", "SecondChecker"} + ) + == True + ) + + assert ( + result_report.has_at_least_one_issue_from_checkers( + {"FirstChecker", "ThirdChecker"} + ) + == True + ) + + assert result_report.has_at_least_one_issue_from_checkers({}) == False + + def test_registration_without_summary() -> None: result_report = Result()