Files
RuoYi-Vue3-FastAPI/ruoyi-fastapi-backend/tests/cli/root/test_contract_config.py
T
insistence 9f7a0daa3b feat: 新增cli系统 (#103)
* feat: 新增cli系统

* feat: ruoyi completion支持powershell

* perf: 优化tui显示

* fix: 修复前端构建异常
2026-05-13 11:19:31 +08:00

41 lines
1.3 KiB
Python

import subprocess
from collections.abc import Callable
from cli.exit_codes import DATABASE_ERROR, REDIS_ERROR, RUNTIME_ERROR, SUCCESS
def test_config_doctor_json_output_has_stable_contract(
run_cli_command: Callable[..., subprocess.CompletedProcess[str]],
parse_json_stdout: Callable[[subprocess.CompletedProcess[str]], dict],
) -> None:
completed = run_cli_command('config', 'doctor', '--env=dev', '--output=json')
payload = parse_json_stdout(completed)
assert completed.returncode in {SUCCESS, REDIS_ERROR, DATABASE_ERROR, RUNTIME_ERROR}
assert payload['env'] == 'dev'
assert isinstance(payload['ok'], bool)
if 'error' in payload:
assert isinstance(payload['message'], str)
assert isinstance(payload['error'], str)
return
assert set(payload) == {
'ok',
'message',
'databaseCount',
'cacheCount',
'missingInCacheCount',
'orphanInCacheCount',
'mismatchCount',
'sampleLimit',
'missingInCache',
'orphanInCache',
'mismatchKeys',
'env',
}
assert isinstance(payload['databaseCount'], int)
assert isinstance(payload['cacheCount'], int)
assert isinstance(payload['missingInCache'], list)
assert isinstance(payload['orphanInCache'], list)
assert isinstance(payload['mismatchKeys'], list)