diff --git a/pr_agent/algo/file_filter.py b/pr_agent/algo/file_filter.py index 9b705cd7..fa97b283 100644 --- a/pr_agent/algo/file_filter.py +++ b/pr_agent/algo/file_filter.py @@ -4,7 +4,7 @@ import re from pr_agent.config_loader import get_settings -def filter_ignored(files): +def filter_ignored(files, platform = 'github'): """ Filter out files that match the ignore patterns. """ @@ -29,17 +29,14 @@ def filter_ignored(files): # keep filenames that _don't_ match the ignore regex if files and isinstance(files, list): - if hasattr(files[0], 'filename'): # github - for r in compiled_patterns: + for r in compiled_patterns: + if platform == 'github': files = [f for f in files if (f.filename and not r.match(f.filename))] - elif hasattr(files[0], 'new') and hasattr(files[0].new, 'path'): # bitbucket - for r in compiled_patterns: + elif platform == 'bitbucket': files = [f for f in files if (f.new.path and not r.match(f.new.path))] - elif isinstance(files[0], dict) and 'new_path' in files[0]: # gitlab - for r in compiled_patterns: + elif platform == 'gitlab': files = [f for f in files if (f['new_path'] and not r.match(f['new_path']))] - elif isinstance(files[0], str): # azure devops - for r in compiled_patterns: + elif platform == 'azure': files = [f for f in files if not r.match(f)] except Exception as e: diff --git a/pr_agent/git_providers/azuredevops_provider.py b/pr_agent/git_providers/azuredevops_provider.py index d27a5040..9578e0fb 100644 --- a/pr_agent/git_providers/azuredevops_provider.py +++ b/pr_agent/git_providers/azuredevops_provider.py @@ -286,7 +286,7 @@ class AzureDevopsProvider(GitProvider): # diffs = list(set(diffs)) diffs_original = diffs - diffs = filter_ignored(diffs_original) + diffs = filter_ignored(diffs_original, 'azure') if diffs_original != diffs: try: get_logger().info(f"Filtered out [ignore] files for pull request:", extra= diff --git a/pr_agent/git_providers/bitbucket_provider.py b/pr_agent/git_providers/bitbucket_provider.py index 2879d8fb..4a0ce49a 100644 --- a/pr_agent/git_providers/bitbucket_provider.py +++ b/pr_agent/git_providers/bitbucket_provider.py @@ -125,7 +125,7 @@ class BitbucketProvider(GitProvider): return self.diff_files diffs_original = list(self.pr.diffstat()) - diffs = filter_ignored(diffs_original) + diffs = filter_ignored(diffs_original, 'bitbucket') if diffs != diffs_original: try: names_original = [d.new.path for d in diffs_original] diff --git a/pr_agent/git_providers/gitlab_provider.py b/pr_agent/git_providers/gitlab_provider.py index a69e01e4..766a6743 100644 --- a/pr_agent/git_providers/gitlab_provider.py +++ b/pr_agent/git_providers/gitlab_provider.py @@ -87,7 +87,7 @@ class GitLabProvider(GitProvider): # filter files using [ignore] patterns diffs_original = self.mr.changes()['changes'] - diffs = filter_ignored(diffs_original) + diffs = filter_ignored(diffs_original, 'gitlab') if diffs != diffs_original: try: names_original = [diff['new_path'] for diff in diffs_original]