From 0cfd8d29c54c143b760d8788cbaa0ecfc78bcea5 Mon Sep 17 00:00:00 2001 From: Onkar Ravgan Date: Wed, 21 Jun 2023 15:47:26 +0530 Subject: [PATCH] Added dbt test_metadata check (#12067) --- .../ingestion/source/database/dbt/metadata.py | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/ingestion/src/metadata/ingestion/source/database/dbt/metadata.py b/ingestion/src/metadata/ingestion/source/database/dbt/metadata.py index ab5fd4500a9..cf079110553 100644 --- a/ingestion/src/metadata/ingestion/source/database/dbt/metadata.py +++ b/ingestion/src/metadata/ingestion/source/database/dbt/metadata.py @@ -891,25 +891,41 @@ class DbtSource(DbtServiceSource): # pylint: disable=too-many-public-methods ) def create_test_case_parameter_definitions(self, dbt_test): - test_case_param_definition = [ - { - "name": dbt_test.test_metadata.name, - "displayName": dbt_test.test_metadata.name, - "required": False, - } - ] - return test_case_param_definition + try: + if hasattr(dbt_test, "test_metadata"): + test_case_param_definition = [ + { + "name": dbt_test.test_metadata.name, + "displayName": dbt_test.test_metadata.name, + "required": False, + } + ] + return test_case_param_definition + except Exception as err: # pylint: disable=broad-except + logger.debug(traceback.format_exc()) + logger.error( + f"Failed to capture tests case paramenter definitions for node: {dbt_test} {err}" + ) + return None def create_test_case_parameter_values(self, dbt_test): - manifest_node = dbt_test.get(DbtCommonEnum.MANIFEST_NODE.value) - values = manifest_node.test_metadata.kwargs.get("values") - dbt_test_values = "" - if values: - dbt_test_values = ",".join(str(value) for value in values) - test_case_param_values = [ - {"name": manifest_node.test_metadata.name, "value": dbt_test_values} - ] - return test_case_param_values + try: + manifest_node = dbt_test.get(DbtCommonEnum.MANIFEST_NODE.value) + if hasattr(manifest_node, "test_metadata"): + values = manifest_node.test_metadata.kwargs.get("values") + dbt_test_values = "" + if values: + dbt_test_values = ",".join(str(value) for value in values) + test_case_param_values = [ + {"name": manifest_node.test_metadata.name, "value": dbt_test_values} + ] + return test_case_param_values + except Exception as err: # pylint: disable=broad-except + logger.debug(traceback.format_exc()) + logger.error( + f"Failed to capture tests case paramenter values for node: {dbt_test} {err}" + ) + return None def generate_entity_link(self, dbt_test): """