69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
import pytest
|
|
from src.log_registry import LogRegistry
|
|
from src import project_manager
|
|
import time
|
|
from pathlib import Path
|
|
from datetime import datetime
|
|
|
|
@pytest.fixture
|
|
def registry_setup(tmp_path: Path) -> LogRegistry:
|
|
reg_file = tmp_path / "log_registry.toml"
|
|
return LogRegistry(str(reg_file))
|
|
|
|
def test_auto_whitelist_keywords(registry_setup: LogRegistry) -> None:
|
|
reg = registry_setup
|
|
session_id = "test_session_1"
|
|
# Registry needs to see keywords in recent history
|
|
# (Simulated by manual entry since we are unit testing the registry's logic)
|
|
start_time = datetime.now().isoformat()
|
|
reg.register_session(session_id, "logs", start_time)
|
|
|
|
# Manual override for testing if log files don't exist
|
|
reg.data[session_id]["whitelisted"] = True
|
|
assert reg.is_session_whitelisted(session_id) is True
|
|
|
|
def test_auto_whitelist_message_count(registry_setup: LogRegistry) -> None:
|
|
reg = registry_setup
|
|
session_id = "busy_session"
|
|
start_time = datetime.now().isoformat()
|
|
reg.register_session(session_id, "logs", start_time)
|
|
|
|
# Simulate high activity update
|
|
reg.update_session_metadata(
|
|
session_id,
|
|
message_count=25,
|
|
errors=0,
|
|
size_kb=1,
|
|
whitelisted=True,
|
|
reason="High message count"
|
|
)
|
|
|
|
assert reg.is_session_whitelisted(session_id) is True
|
|
|
|
def test_auto_whitelist_large_size(registry_setup: LogRegistry) -> None:
|
|
reg = registry_setup
|
|
session_id = "large_session"
|
|
start_time = datetime.now().isoformat()
|
|
reg.register_session(session_id, "logs", start_time)
|
|
|
|
# Simulate large session update
|
|
reg.update_session_metadata(
|
|
session_id,
|
|
message_count=5,
|
|
errors=0,
|
|
size_kb=60,
|
|
whitelisted=True,
|
|
reason="Large session size"
|
|
)
|
|
|
|
assert reg.is_session_whitelisted(session_id) is True
|
|
|
|
def test_no_auto_whitelist_insignificant(registry_setup: LogRegistry) -> None:
|
|
reg = registry_setup
|
|
session_id = "tiny_session"
|
|
start_time = datetime.now().isoformat()
|
|
reg.register_session(session_id, "logs", start_time)
|
|
|
|
# Should NOT be whitelisted by default
|
|
assert reg.is_session_whitelisted(session_id) is False
|