diff --git a/pr_agent/git_providers/gitlab_provider.py b/pr_agent/git_providers/gitlab_provider.py index 3b74f1a5..179459ce 100644 --- a/pr_agent/git_providers/gitlab_provider.py +++ b/pr_agent/git_providers/gitlab_provider.py @@ -181,7 +181,13 @@ class GitLabProvider(GitProvider): get_logger().exception(f"Could not update merge request {self.id_mr} description: {e}") def get_latest_commit_url(self): - return self.mr.commits().next().web_url + try: + return self.mr.commits().next().web_url + except StopIteration: # no commits + return "" + except Exception as e: + get_logger().exception(f"Could not get latest commit URL: {e}") + return "" def get_comment_url(self, comment): return f"{self.mr.web_url}#note_{comment.id}" diff --git a/pr_agent/tools/pr_description.py b/pr_agent/tools/pr_description.py index fc3eca33..0a4f7c59 100644 --- a/pr_agent/tools/pr_description.py +++ b/pr_agent/tools/pr_description.py @@ -328,7 +328,10 @@ class PRDescription: original_prediction_dict = {"pr_files": original_prediction_loaded} else: original_prediction_dict = original_prediction_loaded - filenames_predicted = [file['filename'].strip() for file in original_prediction_dict.get('pr_files', [])] + if original_prediction_dict: + filenames_predicted = [file.get('filename', '').strip() for file in original_prediction_dict.get('pr_files', [])] + else: + filenames_predicted = [] # extend the prediction with additional files not included in the original prediction pr_files = self.git_provider.get_diff_files() @@ -368,8 +371,12 @@ class PRDescription: if counter_extra_files > 0: get_logger().info(f"Adding {counter_extra_files} unprocessed extra files to table prediction") prediction_extra_dict = load_yaml(prediction_extra, keys_fix_yaml=self.keys_fix) - if isinstance(original_prediction_dict, dict) and isinstance(prediction_extra_dict, dict): - original_prediction_dict["pr_files"].extend(prediction_extra_dict["pr_files"]) + if original_prediction_dict and isinstance(original_prediction_dict, dict) and \ + isinstance(prediction_extra_dict, dict) and "pr_files" in prediction_extra_dict: + if "pr_files" in original_prediction_dict: + original_prediction_dict["pr_files"].extend(prediction_extra_dict["pr_files"]) + else: + original_prediction_dict["pr_files"] = prediction_extra_dict["pr_files"] new_yaml = yaml.dump(original_prediction_dict) if load_yaml(new_yaml, keys_fix_yaml=self.keys_fix): prediction = new_yaml @@ -378,7 +385,7 @@ class PRDescription: return prediction except Exception as e: - get_logger().error(f"Error extending uncovered files {self.pr_id}: {e}") + get_logger().exception(f"Error extending uncovered files {self.pr_id}", artifact={"error": e}) return original_prediction