joy-cli/tests/conftest.py
feibisi 3874b562c3 feat: joy CLI Python 2.0 — 50 命令全量重写 + pip 全集群部署
- 50 命令:patrol/health/board/recall/poke/who/inbox/mind/message/team 等
- 异步并行 SSH (asyncio subprocess)
- 命令注册表 + @command decorator + 插件扩展架构
- 环境检测 (Mac/VM/agent 身份)
- JSON 输出契约 (stdout=成功, stderr=错误 code)
- 权限模型 (agent 身份检测 + 环境限制)
- pytest 23/23 通过
- deploy-joy.sh 全集群 16 VM 部署脚本 (含 PEP 668 兼容)
- 旧 bash 版归档到 archive/commands.bash/

Closes: joy CLI 2.0 迁移
2026-07-07 11:38:03 +08:00

41 lines
1 KiB
Python

"""conftest.py — pytest fixtures"""
import os
import sys
from pathlib import Path
import pytest
# 设置 PYTHONPATH
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
os.environ.setdefault("JOY_IDENTITY", "tux")
@pytest.fixture
def env():
from joy.core.env import Env
return Env()
@pytest.fixture
def mock_ssh(monkeypatch):
"""Mock SSH 调用"""
from joy.core import ssh
class MockResult:
def __init__(self, vm, rc=0, stdout="", stderr=""):
self.vm = vm
self.rc = rc
self.stdout = stdout
self.stderr = stderr
self.timed_out = False
self.ok = rc == 0
def mock_ssh_sync(vm, command, timeout=10):
return MockResult(vm, rc=0, stdout="ok|0", stderr="")
def mock_ssh_parallel_sync(vms, command, timeout=10):
return {vm: MockResult(vm, rc=0, stdout="ok", stderr="") for vm in vms}
monkeypatch.setattr(ssh, "ssh_sync", mock_ssh_sync)
monkeypatch.setattr(ssh, "ssh_parallel_sync", mock_ssh_parallel_sync)