测试指南

欢迎来到 ansible-pylibssh 测试指南!

此页面包含有关如何在本地测试 ansible-pylibssh 以及有关如何实现自动化测试和 linting 的一些说明。

强制性工具

所有构建和测试流程都使用以 tox 为中心的流程。因此,首先,让我们安装它

$ python -m pip install 'tox >= 3.19.0' --user

注意

这将在 user-global site-packages 中安装 tox。为了使其可发现,您可能需要将 export PATH="$HOME/.local/bin:$PATH" 添加到您的 ~/.bashrc~/.zshrc 中。

以下示例将使用 runpy 语法(CLI 选项 -m)以避免将脚本放在搜索 PATH 中。

提示

虽然上面的示例使用 pip,但您也可以通过您的操作系统包管理器(例如 aptdnfemergepackmanyumzypper 等)来安装 tox

重要的是至少要有 3.8.0 版本,因为它将允许 tox 仅为 ansible-pylibssh 自动预配一个更新版本的自身。

Tox 将负责 Python 依赖项,但您需要使外部生态系统依赖项可用。

ansible-pylibssh 的核心依赖项是 libssh。ansible-pylibssh 与其链接,因此您的系统上必须存在开发头文件才能成功构建。

下一个外部构建时依赖项是 Cython 以及 using it 需要存在 GCC。请查阅您的操作系统的文档,了解如何将其安装到您的机器上。

另请参见

安装 ansible-pylibssh

从源代码安装

获取源代码

在您整理好工具链后,获取 ansible-pylibssh 的源代码

$ git clone https://github.com/ansible/pylibssh.git ~/src/github/ansible/pylibssh
$ # or, if you use SSH:
$ git clone git@github.com:ansible/pylibssh.git ~/src/github/ansible/pylibssh
$ cd ~/src/github/ansible/pylibssh
[dir:pylibssh] $

注意

以下所有命令都假定工作目录为 Git 检出文件夹(在示例中为 ~/src/github/ansible/pylibssh

运行测试

要在当前 Python 解释器下运行测试,请运行

[dir:pylibssh] $ python -m tox

如果您想针对其他 Python 版本,请执行

[dir:pylibssh] $ python -m tox -e py38

持续集成

在 CI 中,测试的执行方式略有不同。首先,Python 包发行版使用以下命令构建

[dir:pylibssh] $ python -m tox -e build-dists

然后,它们在不同的操作系统和 CPython 版本组合的多个作业矩阵中进行测试

[dir:pylibssh] $ python -m tox -e test-binary-dists

质量和健全性

此外,还有一个单独的工作流程运行 linting 相关的检查,可以在本地重现,如下所示

[dir:pylibssh] $ python -m tox -e build-docs  # Sphinx docs build
[dir:pylibssh] $ python -m tox -e lint  # pre-commit.com tool

持续交付

除了测试和 linting 之外,ansible-pylibssh 还设置了 GitHub Actions 工作流程 CI/CD,以便在测试通过后发布这些相同的 Python 包发行版。

来自 devel 的提交将发布到 https://test.pypi.org/project/ansible-pylibssh/,标记的提交将发布到 https://pypi.ac.cn/project/ansible-pylibssh/

此外,如果您想针对未发布版本的 ansible-pylibssh 测试您的项目,您可能想要使用 nightly 版本。

我们会在标记和推送到 devel 时发布 nightly 版本。它们托管在由 dumb-pypi 生成的基于 GitHub Pages 的索引上。

Web 视图位于 https://ansible.github.io/pylibssh/

$ pip install \
    --extra-index-url=https://ansible.github.io/pylibssh/simple/ \
    --pre \
    ansible-pylibssh