free-claude-code/tests/api/test_detection.py
2026-02-18 04:13:41 -08:00

80 lines
2.9 KiB
Python

"""Edge case tests for api/detection.py."""
from unittest.mock import patch
from api.detection import (
is_filepath_extraction_request,
is_prefix_detection_request,
)
from api.models.anthropic import Message, MessagesRequest
def _make_request(content: str, **kwargs) -> MessagesRequest:
return MessagesRequest(
model="claude-3-sonnet",
max_tokens=100,
messages=[Message(role="user", content=content)],
**kwargs,
)
class TestIsPrefixDetectionRequest:
def test_output_marker_handling(self):
"""Content with Command: but Output: after cmd_start; output has < or \\n\\n."""
content = "<policy_spec> Command:\nls -la\nOutput:\na.txt\nb.txt\n\nmore"
req = _make_request(content)
is_req, cmd = is_prefix_detection_request(req)
assert is_req is True
assert "ls -la" in cmd
def test_prefix_detection_with_empty_command_section(self):
"""Command: at end with no content returns empty command."""
req = _make_request("<policy_spec> Command: ")
is_req, cmd = is_prefix_detection_request(req)
assert is_req is True
assert cmd == ""
def test_exception_in_try_returns_false(self):
"""Exception in try block (e.g. content slice) returns False, ''."""
req = _make_request("<policy_spec> Command: x")
# Return object that raises when sliced - triggers except in is_prefix_detection_request
class BadStr(str):
def __getitem__(self, key):
raise TypeError("bad slice")
with patch(
"api.detection.extract_text_from_content",
return_value=BadStr("<policy_spec> Command: x"),
):
is_req, cmd = is_prefix_detection_request(req)
assert is_req is False
assert cmd == ""
class TestIsFilepathExtractionRequest:
def test_output_marker_minus_one_returns_false(self):
"""Output: not found after Command: returns False."""
content = "Command:\nls\nfilepaths"
req = _make_request(content)
is_fp, cmd, out = is_filepath_extraction_request(req)
assert is_fp is False
assert cmd == ""
assert out == ""
def test_output_has_angle_bracket_splits(self):
"""Output containing < is split and first part used."""
content = "Command:\nls\nOutput:\na.txt b.txt <extra>\nfilepaths"
req = _make_request(content)
is_fp, _cmd, out = is_filepath_extraction_request(req)
assert is_fp is True
assert "<" not in out
assert out == "a.txt b.txt"
def test_output_has_double_newline_splits(self):
"""Output containing \\n\\n is split and first part used."""
content = "Command:\nls\nOutput:\na.txt\nb.txt\n\nmore text\nfilepaths"
req = _make_request(content)
is_fp, _cmd, out = is_filepath_extraction_request(req)
assert is_fp is True
assert "more" not in out