"""Tests for prompt-only trajectory compaction.""" from swe_data_processing.evidence import compact_text, compact_trajectory def test_compact_text_preserves_short_values() -> None: """Short evidence must remain byte-for-byte identical.""" assert compact_text("short evidence", 100) == "short evidence" def test_compact_text_hashes_long_values() -> None: """Long evidence must expose its size and digest for auditability.""" result = compact_text("a" * 1_000, 200) assert len(result) == 200 assert "COMPACTED original_chars=1000 sha256=" in result def test_compact_trajectory_prioritizes_test_observations() -> None: """Important test output receives a larger preview than ordinary output.""" long_content = "x" * 3_000 trajectory = [ {"turn_id": 1, "role": "user", "content": "issue"}, {"turn_id": 2, "role": "assistant", "content": "", "tool_calls": []}, {"turn_id": 3, "role": "tool", "content": long_content}, {"turn_id": 4, "role": "assistant", "content": "done"}, ] signals = { "stateful_turns": [], "test_events": [{"command_turn": 2, "output_turn": 3}], "malformed_tool_turns": [], "unknown_tool_turns": [], } compacted, metadata = compact_trajectory(trajectory, signals) assert compacted[2]["content"] == long_content assert 3 in metadata["important_turn_ids"]