71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
|
|
import pytest
|
||
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
||
|
|
|
||
|
|
from agent.auto_merge import should_auto_merge, AutoMergeChecker
|
||
|
|
|
||
|
|
|
||
|
|
def test_should_not_merge_when_disabled():
|
||
|
|
result = should_auto_merge(
|
||
|
|
auto_merge=False, require_e2e=False, max_files_changed=10,
|
||
|
|
blocked_paths=[".env"], changed_files=["backend/app/main.py"],
|
||
|
|
tests_passed=True, e2e_passed=True,
|
||
|
|
)
|
||
|
|
assert result is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_should_merge_when_all_conditions_met():
|
||
|
|
result = should_auto_merge(
|
||
|
|
auto_merge=True, require_e2e=True, max_files_changed=10,
|
||
|
|
blocked_paths=[".env", "quant.md"],
|
||
|
|
changed_files=["backend/app/main.py", "backend/tests/test_main.py"],
|
||
|
|
tests_passed=True, e2e_passed=True,
|
||
|
|
)
|
||
|
|
assert result is True
|
||
|
|
|
||
|
|
|
||
|
|
def test_should_not_merge_when_tests_fail():
|
||
|
|
result = should_auto_merge(
|
||
|
|
auto_merge=True, require_e2e=False, max_files_changed=10,
|
||
|
|
blocked_paths=[], changed_files=["a.py"],
|
||
|
|
tests_passed=False, e2e_passed=False,
|
||
|
|
)
|
||
|
|
assert result is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_should_not_merge_when_e2e_required_but_failed():
|
||
|
|
result = should_auto_merge(
|
||
|
|
auto_merge=True, require_e2e=True, max_files_changed=10,
|
||
|
|
blocked_paths=[], changed_files=["a.py"],
|
||
|
|
tests_passed=True, e2e_passed=False,
|
||
|
|
)
|
||
|
|
assert result is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_should_not_merge_when_too_many_files():
|
||
|
|
files = [f"file{i}.py" for i in range(15)]
|
||
|
|
result = should_auto_merge(
|
||
|
|
auto_merge=True, require_e2e=False, max_files_changed=10,
|
||
|
|
blocked_paths=[], changed_files=files,
|
||
|
|
tests_passed=True, e2e_passed=True,
|
||
|
|
)
|
||
|
|
assert result is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_should_not_merge_when_blocked_path_modified():
|
||
|
|
result = should_auto_merge(
|
||
|
|
auto_merge=True, require_e2e=False, max_files_changed=10,
|
||
|
|
blocked_paths=[".env", "quant.md"],
|
||
|
|
changed_files=["backend/app/main.py", ".env"],
|
||
|
|
tests_passed=True, e2e_passed=True,
|
||
|
|
)
|
||
|
|
assert result is False
|
||
|
|
|
||
|
|
|
||
|
|
def test_should_merge_without_e2e_when_not_required():
|
||
|
|
result = should_auto_merge(
|
||
|
|
auto_merge=True, require_e2e=False, max_files_changed=10,
|
||
|
|
blocked_paths=[], changed_files=["a.py"],
|
||
|
|
tests_passed=True, e2e_passed=False,
|
||
|
|
)
|
||
|
|
assert result is True
|