mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-07 14:20:37 +08:00
Error handling
This commit is contained in:
@ -8,15 +8,24 @@ def filter_ignored(files):
|
|||||||
Filter out files that match the ignore patterns.
|
Filter out files that match the ignore patterns.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
# load regex patterns, and translate glob patterns to regex
|
# load regex patterns, and translate glob patterns to regex
|
||||||
patterns = get_settings().ignore.regex
|
patterns = get_settings().ignore.regex
|
||||||
patterns += [fnmatch.translate(glob) for glob in get_settings().ignore.glob]
|
patterns += [fnmatch.translate(glob) for glob in get_settings().ignore.glob]
|
||||||
|
|
||||||
# compile regex patterns
|
# compile all valid patterns
|
||||||
compiled_patterns = [re.compile(r) for r in patterns]
|
compiled_patterns = []
|
||||||
|
for r in patterns:
|
||||||
|
try:
|
||||||
|
compiled_patterns.append(re.compile(r))
|
||||||
|
except re.error:
|
||||||
|
pass
|
||||||
|
|
||||||
# keep filenames that _don't_ match the ignore regex
|
# keep filenames that _don't_ match the ignore regex
|
||||||
for r in compiled_patterns:
|
for r in compiled_patterns:
|
||||||
files = [f for f in files if not r.match(f.filename)]
|
files = [f for f in files if not r.match(f.filename)]
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Could not filter file list: {e}")
|
||||||
|
|
||||||
return files
|
return files
|
||||||
|
@ -14,7 +14,7 @@ class TestIgnoreFilter:
|
|||||||
type('', (object,), {'filename': 'file4.py'})(),
|
type('', (object,), {'filename': 'file4.py'})(),
|
||||||
type('', (object,), {'filename': 'file5.py'})()
|
type('', (object,), {'filename': 'file5.py'})()
|
||||||
]
|
]
|
||||||
assert filter_ignored(files) == files
|
assert filter_ignored(files) == files, "Expected all files to be returned when no ignore patterns are given."
|
||||||
|
|
||||||
def test_glob_ignores(self, monkeypatch):
|
def test_glob_ignores(self, monkeypatch):
|
||||||
"""
|
"""
|
||||||
@ -57,3 +57,24 @@ class TestIgnoreFilter:
|
|||||||
|
|
||||||
filtered_files = filter_ignored(files)
|
filtered_files = filter_ignored(files)
|
||||||
assert filtered_files == expected, f"Expected {[file.filename for file in expected]}, but got {[file.filename for file in filtered_files]}."
|
assert filtered_files == expected, f"Expected {[file.filename for file in expected]}, but got {[file.filename for file in filtered_files]}."
|
||||||
|
|
||||||
|
def test_invalid_regex(self, monkeypatch):
|
||||||
|
"""
|
||||||
|
Test invalid patterns are quietly ignored.
|
||||||
|
"""
|
||||||
|
monkeypatch.setattr(global_settings.ignore, 'regex', ['(((||', '^file[2-4]\..*$'])
|
||||||
|
|
||||||
|
files = [
|
||||||
|
type('', (object,), {'filename': 'file1.py'})(),
|
||||||
|
type('', (object,), {'filename': 'file2.java'})(),
|
||||||
|
type('', (object,), {'filename': 'file3.cpp'})(),
|
||||||
|
type('', (object,), {'filename': 'file4.py'})(),
|
||||||
|
type('', (object,), {'filename': 'file5.py'})()
|
||||||
|
]
|
||||||
|
expected = [
|
||||||
|
files[0],
|
||||||
|
files[4]
|
||||||
|
]
|
||||||
|
|
||||||
|
filtered_files = filter_ignored(files)
|
||||||
|
assert filtered_files == expected, f"Expected {[file.filename for file in expected]}, but got {[file.filename for file in filtered_files]}."
|
||||||
|
Reference in New Issue
Block a user