From d9b0540a965f9d7a6f8d5c1dd5451340845fffd6 Mon Sep 17 00:00:00 2001 From: Hoang Tung Dinh Date: Thu, 26 Sep 2024 09:25:12 +0200 Subject: [PATCH] Fix an issue in copy_param_from_config (#42) Signed-off-by: hoangtungdinh <11166240+hoangtungdinh@users.noreply.github.com> Co-authored-by: hoangtungdinh <11166240+hoangtungdinh@users.noreply.github.com> --- qc_baselib/result.py | 24 +++++++++++++++++++----- tests/test_result.py | 15 +++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/qc_baselib/result.py b/qc_baselib/result.py index fd9630b..2d8fe8f 100644 --- a/qc_baselib/result.py +++ b/qc_baselib/result.py @@ -249,7 +249,9 @@ def add_checker_summary( else: checker.summary += f" {content}" - def _get_checker_bundle(self, checker_bundle_name: str) -> result.CheckerBundleType: + def _get_checker_bundle_without_error( + self, checker_bundle_name: str + ) -> Union[None, result.CheckerBundleType]: if self._report_results is None: raise RuntimeError( "Report not initialized. Initialize the report first by registering the version or a checker bundle." @@ -264,6 +266,11 @@ def _get_checker_bundle(self, checker_bundle_name: str) -> result.CheckerBundleT None, ) + return bundle + + def _get_checker_bundle(self, checker_bundle_name: str) -> result.CheckerBundleType: + bundle = self._get_checker_bundle_without_error(checker_bundle_name) + if bundle is None: raise RuntimeError( f"Bundle not found. The specified {checker_bundle_name} does not exist on the report. Register the bundle first." @@ -271,9 +278,9 @@ def _get_checker_bundle(self, checker_bundle_name: str) -> result.CheckerBundleT return bundle - def _get_checker( + def _get_checker_without_error( self, bundle: result.CheckerBundleType, checker_id: str - ) -> result.CheckerType: + ) -> Union[None, result.CheckerType]: checker = next( ( checker @@ -283,6 +290,13 @@ def _get_checker( None, ) + return checker + + def _get_checker( + self, bundle: result.CheckerBundleType, checker_id: str + ) -> result.CheckerType: + checker = self._get_checker_without_error(bundle, checker_id) + if checker is None: raise RuntimeError( f"Checker not found. The specified {checker_id} does not exist on the report. Register the checker first." @@ -814,7 +828,7 @@ def copy_param_from_config(self, config: Configuration) -> None: # Copy Configuration checker bundle and checker parameters to Result for config_bundle in config.get_all_checker_bundles(): - result_bundle = self._get_checker_bundle( + result_bundle = self._get_checker_bundle_without_error( checker_bundle_name=config_bundle.application ) @@ -827,7 +841,7 @@ def copy_param_from_config(self, config: Configuration) -> None: ) for config_checker in config_bundle.checkers: - result_checker = self._get_checker( + result_checker = self._get_checker_without_error( bundle=result_bundle, checker_id=config_checker.checker_id, ) diff --git a/tests/test_result.py b/tests/test_result.py index efea55c..10e78d7 100644 --- a/tests/test_result.py +++ b/tests/test_result.py @@ -1201,6 +1201,21 @@ def test_result_config_param_copy() -> None: value=2.0, ) + config.register_checker( + checker_bundle_name="TestCheckerBundle", + checker_id="FirstNonExistingTestChecker", + min_level=IssueSeverity.INFORMATION, + max_level=IssueSeverity.ERROR, + ) + + config.register_checker_bundle(checker_bundle_name="NonExistingTestCheckerBundle") + config.register_checker( + checker_bundle_name="NonExistingTestCheckerBundle", + checker_id="SecondNonExistingTestChecker", + min_level=IssueSeverity.INFORMATION, + max_level=IssueSeverity.ERROR, + ) + result = Result() result.register_checker_bundle( build_date="",