galaxis-agent/tests/test_auto_merge.py

71 lines
2.2 KiB
Python
Raw Normal View History

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