fix(navigation): implement zero-trust structural fast paths to eliminate VLM hallucination
This commit is contained in:
@@ -1,29 +0,0 @@
|
||||
import os
|
||||
import shutil
|
||||
import base64
|
||||
from unittest.mock import MagicMock, patch
|
||||
from GramAddict.core.behaviors.simulator import BehaviorSimulator
|
||||
|
||||
def test_device_facade_session_trace_cleanup(tmp_path):
|
||||
facade = BehaviorSimulator()
|
||||
facade.get_screenshot_b64 = MagicMock(return_value=base64.b64encode(b"fake_jpg_data").decode("utf-8"))
|
||||
|
||||
with patch("GramAddict.core.device_facade.os.path.join", side_effect=os.path.join), \
|
||||
patch("GramAddict.core.device_facade.os.makedirs"):
|
||||
|
||||
def fake_join(*args):
|
||||
if args[0] == "debug" and args[1] == "session_traces":
|
||||
return str(tmp_path / "session_traces")
|
||||
return os.path.join(*args)
|
||||
|
||||
with patch("GramAddict.core.device_facade.os.path.join", side_effect=fake_join):
|
||||
traces_root = tmp_path / "session_traces"
|
||||
traces_root.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
for i in range(6):
|
||||
d = traces_root / f"old_session_{i}"
|
||||
d.mkdir()
|
||||
|
||||
facade.dump_hierarchy()
|
||||
remaining_folders = [f for f in os.listdir(traces_root) if os.path.isdir(os.path.join(traces_root, f))]
|
||||
assert len(remaining_folders) <= 5
|
||||
@@ -24,7 +24,9 @@ def test_dm_engine_uses_correct_dm_memory_logging(monkeypatch):
|
||||
Note: I am writing this to PROVE the fix is necessary.
|
||||
"""
|
||||
mock_device = MagicMock()
|
||||
mock_device.dump_hierarchy.return_value = "<xml></xml>"
|
||||
mock_device.dump_hierarchy.return_value = (
|
||||
'<xml>resource-id="com.instagram.android:id/inbox_refreshable_thread_list_recyclerview"</xml>'
|
||||
)
|
||||
|
||||
mock_telepathic = MagicMock()
|
||||
# Mock unread thread found
|
||||
@@ -98,12 +100,12 @@ def test_dm_navigation_double_back_guard():
|
||||
mock_device = MagicMock()
|
||||
# Mocking hierarchy sequence
|
||||
mock_device.dump_hierarchy.side_effect = [
|
||||
"<xml>Inbox</xml>", # Loop 1 start
|
||||
"<xml>Thread</xml>", # Context read
|
||||
"<xml>Thread</xml>", # Send button find
|
||||
"<xml><node resource-id='com.instagram.android:id/direct_thread_header'/></xml>", # Navigation check AFTER back
|
||||
"<xml>Inbox</xml>", # Loop 2 start (exit)
|
||||
"<xml>Inbox</xml>", # Buffer
|
||||
'<xml>resource-id="com.instagram.android:id/inbox_refreshable_thread_list_recyclerview"</xml>', # Loop 1 start
|
||||
'<xml>resource-id="com.instagram.android:id/direct_thread_header"</xml>', # Context read
|
||||
'<xml>resource-id="com.instagram.android:id/direct_thread_header"</xml>', # Send button find
|
||||
'<xml>resource-id="com.instagram.android:id/direct_thread_header"</xml>', # Navigation check AFTER back
|
||||
'<xml>resource-id="com.instagram.android:id/inbox_refreshable_thread_list_recyclerview"</xml>', # Loop 2 start (exit)
|
||||
'<xml>resource-id="com.instagram.android:id/inbox_refreshable_thread_list_recyclerview"</xml>', # Buffer
|
||||
]
|
||||
|
||||
mock_telepathic = MagicMock()
|
||||
|
||||
Reference in New Issue
Block a user