cnimmo / test-only-changed
仅在更改的文件上运行 Paratest
1.2.0
2023-07-13 19:40 UTC
Requires
- cnimmo/granular-testsuites: ^1.1
- cnimmo/list-deps: ^1.0
Requires (Dev)
- brianium/paratest: ^7.1
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.phplist-only此选项允许您配置 Paratest/自行提供测试运行器。当设置为 true 时,该操作将不会运行您的测试,而是将所有测试套件列表写入files输出,并用separator连接(见下文)。separator与list-only参数一起使用。指定在测试套件名称之间应使用的分隔符。默认为逗号。
工作原理
该包为每个测试文件构建一个依赖图,然后将其与您的测试上次成功通过以来更改的文件进行比较。
如果依赖图包括正在检查的文件,则该文件将包含在测试运行中。
然后,我们根据您现有的 phpunit.xml 生成一个 phpunit.xml,为每个相关的测试文件指定一个测试套件,因为 Paratest 不支持在更大的测试套件中运行特定文件。
注意事项
- 目前仅支持通过 "use" 导入的 PHP 命名空间。动态导入无法检测。