Files
pyflowx/tests/cli/test_envdev_tool.py
T
zhou e31646e281 feat: 新增envdev、gittool、msdownload、pymake工具模块及对应测试用例
新增四个业务工具模块:
1. envdev: 开发环境镜像源配置工具,支持Python/Conda/Rust镜像配置及Linux系统环境配置
2. gittool: Git操作工具,提供提交、初始化、清理、推送等快捷子命令
3. msdownload: ModelScope模型/数据集下载工具
4. pymake: 项目构建工具,覆盖构建、测试、发布等全流程开发操作

同时为每个工具模块编写了完整的注册验证与功能测试用例
2026-07-06 13:11:09 +08:00

100 lines
3.6 KiB
Python

"""Tests for ops.envdev / sglang / msdownload 模块 (@px.tool 注册验证)."""
from __future__ import annotations
import pyflowx as px
from pyflowx.ops import envdev, msdownload, sglang # noqa: F401 -- 触发 @px.tool 注册
from pyflowx.tools import _TOOL_REGISTRY, get_tool
# ---------------------------------------------------------------------- #
# envdev 注册验证
# ---------------------------------------------------------------------- #
class TestEnvdevRegistration:
"""``envdev`` 模块 ``@px.tool`` 注册验证."""
def test_envdev_registered(self) -> None:
"""envdev 应在 _TOOL_REGISTRY 中注册."""
assert "envdev" in _TOOL_REGISTRY
def test_visible_subcommands(self) -> None:
"""可见子命令应包含核心镜像源配置命令."""
subs = px.list_subcommands("envdev")
assert "setup-python" in subs
assert "setup-conda" in subs
assert "setup-rust" in subs
assert "setup-linux-mirror" in subs
def test_install_subcommands_visible(self) -> None:
"""安装类子命令应可见."""
subs = px.list_subcommands("envdev")
assert "download-rustup" in subs
assert "install-rust" in subs
assert "install-qt-libs" in subs
assert "install-fonts" in subs
assert "install-docker" in subs
def test_setup_python_is_fn(self) -> None:
"""setup-python 应为 fn 任务 (非 cmd)."""
spec = get_tool("envdev", "setup-python")
assert spec.func is not None
assert spec.cmd is None
def test_setup_conda_is_fn(self) -> None:
"""setup-conda 应为 fn 任务."""
spec = get_tool("envdev", "setup-conda")
assert spec.func is not None
def test_setup_rust_is_fn(self) -> None:
"""setup-rust 应为 fn 任务."""
spec = get_tool("envdev", "setup-rust")
assert spec.func is not None
def test_setup_linux_mirror_is_fn(self) -> None:
"""setup-linux-mirror 应为 fn 任务."""
spec = get_tool("envdev", "setup-linux-mirror")
assert spec.func is not None
# ---------------------------------------------------------------------- #
# sglang 注册验证
# ---------------------------------------------------------------------- #
class TestSglangRegistration:
"""``sglang`` 模块 ``@px.tool`` 注册验证."""
def test_sglang_registered(self) -> None:
"""sglang 应在 _TOOL_REGISTRY 中注册."""
assert "sglang" in _TOOL_REGISTRY
def test_visible_subcommands(self) -> None:
"""可见子命令: install, run."""
subs = px.list_subcommands("sglang")
assert "install" in subs
assert "run" in subs
def test_run_needs_install(self) -> None:
"""run 应依赖 install."""
spec = get_tool("sglang", "run")
assert "install" in spec.needs
# ---------------------------------------------------------------------- #
# msdownload 注册验证
# ---------------------------------------------------------------------- #
class TestMsdownloadRegistration:
"""``msdownload`` 模块 ``@px.tool`` 注册验证."""
def test_msdownload_registered(self) -> None:
"""msdownload 应在 _TOOL_REGISTRY 中注册."""
assert "msdownload" in _TOOL_REGISTRY
def test_msdownload_default_spec(self) -> None:
"""msdownload 默认 spec 应可获取且为 fn 任务."""
spec = get_tool("msdownload")
assert spec.func is not None
assert spec.cmd is None
def test_msdownload_run_callable(self) -> None:
"""msdownload_run 应为可调用函数."""
assert callable(msdownload.msdownload_run)