e31646e281
新增四个业务工具模块: 1. envdev: 开发环境镜像源配置工具,支持Python/Conda/Rust镜像配置及Linux系统环境配置 2. gittool: Git操作工具,提供提交、初始化、清理、推送等快捷子命令 3. msdownload: ModelScope模型/数据集下载工具 4. pymake: 项目构建工具,覆盖构建、测试、发布等全流程开发操作 同时为每个工具模块编写了完整的注册验证与功能测试用例
100 lines
3.6 KiB
Python
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)
|