provision-ops/yaml-tests

插件,用于从 YML 文件运行命令并将其传递给 GitHub 提交状态 API。


README

Yaml Tests 是一个简单的 composer 插件,使得定义和运行一系列测试尽可能简单。

该插件提供了一个 composer 命令,该命令简单地读取一个 YML 文件并将这些行作为进程运行。

输出以易于阅读的方式呈现,如果单个进程失败,则返回适当的退出代码。

它可以是“本地”安装(包含在您的 composer.json 文件中)或“全局”安装(安装到全局的“composer”命令中)。

安装

yaml-tests 保留在您的 composer.json 中(本地安装)是操作最稳定的方式,因为版本已锁定。

本地安装

  1. cd my-composer-project
  2. composer require provision-ops/yaml-tests

全局安装

composer global require provision-ops/yaml-tests

要确认命令已安装,请请求帮助

composer yaml-tests --help

GitHub 集成

如果您将 GitHub Token 传递给 yaml-tests,则它将发送测试结果作为“提交状态”指标。

有 3 种方法将 GitHub Token 传递给 YamlTests

  1. 使用 --github-token 命令行选项。在 CI 中不要使用此选项,否则可能会在日志中暴露您的 GitHub Token。

  2. 设置 GITHUB_TOKEN 环境变量。这在 Docker 中很简单,但如果您的测试在不同环境中运行,可能会很具挑战性。

  3. 推荐:在您的仓库或用户的家目录中创建一个 .env 文件

    GITHUB_TOKEN=abcdefg
    

    此目录中有一个 .env.example 文件,您可以使用它作为示例。

编写测试

创建 tests.yml 文件

默认情况下,composer yaml-tests 命令会在项目根目录中查找 tests.yml 文件。您也可以使用 --tests-file 选项传递路径。

tests.yml 文件被读取为简单的命令集合。键可以是任何字符串,只要它在测试套件中是唯一的。

test/dir: pwd
test/environment: env

您还可以在列表中包含命令

lint:
  - find src -name '*.php' -print0 | xargs -0 -n1 php -l
  - find web/modules/custom -name '*.php' -print0 | xargs -0 -n1 php -l
  - find tests/src -name '*.php' -print0 | xargs -0 -n1 php -l

您可以为每个测试包含一个描述,例如

debug: 
  command: env
  description: Current Environment

tests.yml 中的命令

Yaml Tests 的工作方式类似于 Composer Scripts:如果您的项目在 composer.json 中设置了 config.bin-dir,当运行脚本或其他命令时,Composer 将自动将此目录添加到 PATH。

例如,您可以在 composer 脚本或 tests.yml 中包含 PHPUnit 并调用它,而不需要指定完整的路径。

composer.json:

{
    "config": {
        "bin-dir": "bin/"
    },
    "require": {
        "provision-ops/yaml-tests": "^1.1",
        "phpunit/phpunit": "^8.1"
    },
    "scripts": {
        "test": [
            "which phpunit",
            "phpunit --version"
        ]
    }
}

composer.json 中包含 scripts.test 部分将创建一个名为 composer test 的 composer 命令。

tests.yml:

test/debug: 
  - which phpunit
  - phpunit --version

如果您只想维护一组脚本,您可以在 tests.yml 中引用 composer 脚本。

tests.yml:

test/debug: composer test 

运行测试

一旦放置了 tests.yml 文件,并且可用了 composer yaml-tests 命令,您就可以触发测试运行。

干运行与正常运行

此插件还旨在将这些测试作为“提交状态”传递到 GitHub 上。这允许我们将结果标记到特定的提交,标记为通过或失败。

如果未设置环境变量 GITHUB_TOKEN 或命令行选项 --github-token,则将强制执行 --dry-run 选项。

如果已设置令牌但不想将测试结果发布到 GitHub,请使用 --dry-run 选项。

运行 composer yaml-tests 或,就像所有 composer 命令一样,您可以使用快捷键如 compose y

composer yaml-tests

输出将类似于以下内容

Test Run

最后您将得到一个像这样的精美摘要

Test Run

Yaml-Tests 可执行文件

现在有一个 "bin" 目录用于 yaml-tests,允许命令独立运行。

如果您需要 provision-ops/yaml-tests,您将在 bin-dir 中看到一个指向 yaml-tests 的链接。