"""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 = " 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(" 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(" 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(" 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 \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