Files
Nexus/tests/test_script_execution_progress.py
2026-07-08 22:31:31 +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({}, []) == "—"