Files
Nexus/tests/test_script_execution_progress.py
T
Nexus Agent 5f63fb0a3f fix(scripts): 执行进度按成功台数计算,失败项快速定位与面板清理
progress 改为 success/total(失败不计入分子);脚本库执行详情中文化、失败筛选与终态任务移出批量状态面板。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 05:11:39 +08:00

59 lines
1.8 KiB
Python

"""Tests for script execution progress summary (success/total, failures excluded)."""
from server.infrastructure.redis.script_execution_store import execution_progress_summary
def test_all_success():
ids = [1, 2, 3]
results = {
"1": {"status": "success", "exit_code": 0},
"2": {"status": "success", "exit_code": 0},
"3": {"phase": "done", "status": "completed", "exit_code": 0},
}
assert execution_progress_summary(results, ids) == "3/3"
def test_partial_failure():
ids = list(range(1, 367))
results = {str(i): {"status": "success", "exit_code": 0} for i in ids[:-1]}
results[str(ids[-1])] = {"status": "failed", "exit_code": 1, "stderr": "error"}
assert execution_progress_summary(results, ids) == "365/366"
def test_all_failed():
ids = [10, 20]
results = {
"10": {"status": "failed", "exit_code": 1},
"20": {"status": "error", "exit_code": -1},
}
assert execution_progress_summary(results, ids) == "0/2"
def test_pending_not_counted():
ids = [1, 2, 3]
results = {
"1": {"status": "success", "exit_code": 0},
"2": {"phase": "pending", "status": "started"},
"3": {"status": "failed", "exit_code": 1},
}
assert execution_progress_summary(results, ids) == "1/3"
def test_skipped_not_counted():
ids = [1, 2]
results = {
"1": {"status": "success", "exit_code": 0},
"2": {"status": "skipped", "exit_code": -1, "stderr": "no ssh"},
}
assert execution_progress_summary(results, ids) == "1/2"
def test_missing_result_not_success():
ids = [1, 2, 3]
results = {"1": {"status": "success", "exit_code": 0}}
assert execution_progress_summary(results, ids) == "1/3"
def test_empty_total():
assert execution_progress_summary({}, []) == "—"