diff --git a/tests/integration/test_diagnosis_tree_link.py b/tests/integration/test_diagnosis_tree_link.py new file mode 100644 index 0000000..0b9d1a9 --- /dev/null +++ b/tests/integration/test_diagnosis_tree_link.py @@ -0,0 +1,31 @@ +"""集成验证:真实树注入后 _get_ground_truth_for_trace 收到非空 ground_truth;core 不依赖 app。 + +这两个测试守护"诊断 tree_data 断链"修复: +- 真实树 → load_tree_nodes → _get_ground_truth_for_trace,证明 bug 之前恒空的环已接通。 +- core/evolution/diagnose.py 不 import app,守护依赖方向(core 不依赖 app)与算法保真。 +""" + +from pathlib import Path + +from app.harness.tree_nodes import load_tree_nodes +from core.evolution.diagnose import _get_ground_truth_for_trace + +# store 根锚定到仓库根,避免测试运行目录漂移导致相对路径失效(与 Task 1 测试一致)。 +_STORE_DIR = Path(__file__).resolve().parents[2] / "store" + + +def test_ground_truth_nonempty_with_real_tree(): + """对真实 T2 样本 604-2(video 0RxMZBLeqRI)的 view_node 调用,ground_truth 非空。""" + tree_data = load_tree_nodes(_STORE_DIR, "0RxMZBLeqRI") + node_id = "0RxMZBLeqRI_L1_000" # 该视频真实存在的节点 + ground_truth = _get_ground_truth_for_trace(tree_data, "view_node", {"node_id": node_id}) + assert ground_truth and ground_truth != "{}" # 拿到该节点 card 的 JSON,非空 + + +def test_core_diagnose_does_not_import_app(): + """算法保真 + 依赖方向:core/evolution/diagnose.py 不 import app。""" + src = (Path(__file__).resolve().parents[2] / "core" / "evolution" / "diagnose.py").read_text( + encoding="utf-8" + ) + assert "import app." not in src + assert "from app." not in src