cnimmo/test-only-changed

仅在更改的文件上运行 Paratest

1.2.0 2023-07-13 19:40 UTC

This package is auto-updated.

Last update: 2024-09-13 22:59:16 UTC


README

这个 Github action 允许您在 CI 中更快速地执行 PHP 单元测试,通过只运行自上次成功工作流运行以来更改的文件相关的测试。

换句话说,我们只运行那些可能真正失败的测试。

此包受到 Jest 中的 --onlyChanged 标志的启发。

我们使用 Paratest 作为测试运行器,以实现快速并行执行。

先决条件

该操作应在已设置 PHP 和 composer 的 Github actions 工作流中使用。

用法

请参阅一个 示例工作流

支持的参数

  • branch-name 扫描以查找上次成功工作流运行的分支名称。默认为当前分支。
  • workflow-id 要检查成功的流程名称。默认为当前流程。
  • tests-directory 测试所在的目录相对于根目录。默认为 tests。
  • ignore-paths 在确定要运行的文件时要忽略的文件。默认为 vendor,node_modules,_ide_helper.php
  • list-only 此选项允许您配置 Paratest/自行提供测试运行器。当设置为 true 时,该操作将不会运行您的测试,而是将所有测试套件列表写入 files 输出,并用 separator 连接(见下文)。
  • separatorlist-only 参数一起使用。指定在测试套件名称之间应使用的分隔符。默认为逗号。

工作原理

该包为每个测试文件构建一个依赖图,然后将其与您的测试上次成功通过以来更改的文件进行比较。

如果依赖图包括正在检查的文件,则该文件将包含在测试运行中。

然后,我们根据您现有的 phpunit.xml 生成一个 phpunit.xml,为每个相关的测试文件指定一个测试套件,因为 Paratest 不支持在更大的测试套件中运行特定文件。

注意事项

  • 目前仅支持通过 "use" 导入的 PHP 命名空间。动态导入无法检测。