26 lines
1010 B
Python
26 lines
1010 B
Python
"""守卫 gate tree 错配 bug:run_gates 必须用 current_tree(换视频后的当前树)。"""
|
||
|
||
import ast
|
||
from pathlib import Path
|
||
|
||
_PIPELINE = Path(__file__).resolve().parents[2] / "app" / "question_gen" / "pipeline_v2.py"
|
||
|
||
|
||
def _find_run_gates_tree_arg() -> str:
|
||
"""解析 pipeline_v2.py,返回 run_gates 调用中 tree= 关键字实参的变量名。"""
|
||
tree_src = ast.parse(_PIPELINE.read_text(encoding="utf-8"))
|
||
for node in ast.walk(tree_src):
|
||
if isinstance(node, ast.Call):
|
||
func = node.func
|
||
name = getattr(func, "id", None) or getattr(func, "attr", None)
|
||
if name == "run_gates":
|
||
for kw in node.keywords:
|
||
if kw.arg == "tree":
|
||
assert isinstance(kw.value, ast.Name)
|
||
return kw.value.id
|
||
raise AssertionError("未找到 run_gates 的 tree= 关键字实参")
|
||
|
||
|
||
def test_run_gates_uses_current_tree():
|
||
assert _find_run_gates_tree_arg() == "current_tree"
|