资讯动态

Pest 贡献指南:从 Fork 到合入的完整开发工作流

发布时间:2026/10/2 17:23:49 来源:尧图企业网站定制
测试【免费下载链接】pestThe elegant testing framework for PHP developers and AI agents.项目地址https://gitcode.com/GitHub_Trending/pe/pest点击查看免费下载本文是 Pest优雅的 PHP 测试框架仓库的贡献指南详解面向希望参与 Pest 核心开发、提交 Pull Request 的开发者。你将掌握完整的贡献流程Fork、分支、提交、PR、本地开发环境搭建Composer 与 Docker 两条路径、代码规范校验Rector Pint 的composer lint以及 Pest 自身的多层级测试体系单元、集成、并行、类型检查与快照更新。文中所有命令与配置均以当前仓库实际内容为准并附有对应的源码与配置文件路径可直接照搬运行。贡献总览与流程Pest 欢迎任何形式的贡献所有改动都通过 Pull Request 合并进主干。提交 PR 前请先阅读并遵守以下完整流程Fork 项目将仓库复制到自己的 GitHub 账号下获得可自由改动的副本创建新分支在 Fork 出的仓库中基于主干当前为5.x分支线创建特性分支避免直接在主干上开发编码、测试、提交并推送完成功能或修复后运行本地测试套件详见下文「测试体系」一节再生成有意义的提交并推送打开 Pull Request提交 PR 并详细说明改动内容同时务必遵循仓库内置的 .github/PULL_REQUEST_TEMPLATE.md 模板。PR 模板要求填写「What:」区块勾选 Bug Fix 或 New Feature、「Description:」区块描述 PR 解决的问题以及可选的「Related:」区块关联的 issue 链接。按模板填写的 PR 能让维护团队更快理解改动意图并进入评审。贡献守则代码风格提交前必须运行composer lint确保改动通过仓库配置的自动格式化与静态重构检查该命令的具体行为见下文「代码规范校验」一节提交历史保持提交历史连贯、可读确保 PR 中的每一个独立提交都是有意义的原子提交而不是一堆零散的中间状态冲突处理当主干发生变更时建议使用git rebase将你的分支变基到最新主干之上保持提交历史的线性避免不必要的合并提交版本规范Pest 遵循语义化版本SemVer。这意味着破坏性变更进入major版本、新增功能进入minor版本、缺陷修复进入patch版本。插件如 src/Plugins/Parallel 目录下的各个插件也遵循同样的版本策略——从仓库 RELEASE.md 可以看到插件应与 Pest 核心使用相同的主版本号0.x阶段则使用相同的次版本号。本地开发环境搭建方式一Composer 安装依赖克隆你的 Fork 之后在仓库根目录安装开发依赖composer install依赖声明位于 composer.json核心依赖包括phpunit/phpunit^13.3.4、brianium/paratest用于并行测试、nunomaduro/collision错误呈现以及 Pest 的一系列官方插件arch、mutate、profanity 等开发依赖require-dev还包括pestphp/pest-dev-tools、pestphp/pest-plugin-phpstan、pestphp/pest-plugin-type-coverage、psy/psysh等。项目要求 PHP 版本为^8.4。方式二Docker 一键环境如果你安装了 Docker可以使用仓库提供的 Docker 镜像快速获得 Pest 的全部依赖。镜像定义在 docker/Dockerfile其构建参数与内容如下ARG PHP8.1 FROM php:${PHP}-cli-alpine RUN apk update apk add \ zip libzip-dev icu-dev git RUN docker-php-ext-install zip intl RUN apk add --no-cache linux-headers autoconf build-base RUN pecl install xdebug RUN docker-php-ext-enable xdebug COPY --fromcomposer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html ENTRYPOINT [php]镜像基于php:cli-alpine预装zip、intl扩展与xdebug并内置 Composer 2。假设你已经克隆了仓库可以通过 Make 命令完成构建与测试make build—— 构建 Docker 镜像make install—— 在容器内安装 Composer 依赖make test—— 运行项目测试与分析工具。如需针对特定 PHP 版本验证兼容性可在构建时传入PHP构建参数make build ARGS--build-arg PHP8.3镜像默认的 PHP 版本始终是 Pest 支持的最低版本Dockerfile 中ARG PHP8.1。需要说明的是本仓库根目录当前并未包含 Makefile 文件因此make系列命令需要你自行准备对应的 Makefile 目标定义或直接改用下方的 Composer 命令二者效果等价。代码规范校验代码风格由composer lint统一把关其定义位于 composer.json 的scripts区块lint: [ rector, pint --parallel ]该命令串行执行两条工具链RectorPHP 代码重构与现代化工具配置见 rector.php。它基于PestSetList::CODING_STYLE等规则集扫描src与tests两个目录并跳过src/Plugins/Parallel/Paratest/WrapperRunner.php、tests/Fixtures/Arch、tests/Fixtures/Suites等特殊路径这些是刻意保持原样的 fixture 或第三方继承代码PintLaravel 官方代码风格修复工具并行运行。其配置见 pint.json排除了tests/Fixtures/Suites目录并启用Pint/phpdoc_type_annotations_only规则要求 PHPDoc 中只保留类型注解。在提交 PR 之前务必运行composer lint让代码通过这两道格式化与风格检查。测试体系Pest 自身拥有分层级的测试体系全部命令定义在 composer.json 的scripts区块中测试用例则位于 tests 目录按Features、Unit、Visual、PHPUnit、Fixtures等组织。常用命令如下运行全部测试composer test该命令聚合执行test:lintRector dry-run Pint 校验、test:type:checkPHPStan、test:type:coverage类型覆盖率不低于 100%、test:unit、test:parallel与test:integration是 CI 与发布前的总闸门。单元测试与集成测试# 单元测试排除 integration 分组 composer test:unit # 集成测试运行 integration 分组带详细输出 composer test:integration两者的区分依据是测试上的分组标记单元测试通过--exclude-groupintegration排除集成用例而集成测试通过--groupintegration只运行集成用例。集成测试通常涉及跨进程、真实文件系统或外部工具交互的场景例如 tests/Features/Tia 下的测试。类型检查composer test:type:check该命令执行phpstan analyse内存无上限、--debug模式配置见 phpstan.neon分析级别为level 7分析路径为src目录并引入phpstan-baseline.neon基线文件与phpstan-pest-extension.neon、vendor/pestphp/pest-plugin-phpstan/extension.neon两个扩展。此外还有类型覆盖率检查composer test:type:coverage其要求--type-coverage --min100即src下所有代码的静态类型覆盖率必须达到 100%否则视为失败。更新快照快照测试是 Pest 的核心特性之一如 tests/Features/Expect/toMatchSnapshot.php 的测试用例。当你有意修改了输出行为时需要重新生成快照基准composer update:snapshots该命令以REBUILD_SNAPSHOTStrue环境变量配合--update-snapshots标志运行并排除tia分组TIA 相关用例的基准不可随意重写。其他辅助命令除贡献指南点名的命令外仓库还提供了并行测试、污言校验等辅助命令可用于本地更精细的验证# 并行测试3 个进程排除集成分组 composer test:parallel # 代码风格 dry-run 校验不实际修改文件 composer test:lint # 敏感词/污言检测 composer test:profanity结语参与 Pest 贡献并不复杂Fork 后创建分支用composer install或 Docker 搭好环境开发过程中随手composer lint保持风格合入前跑一遍composer test全量验证最后按 .github/PULL_REQUEST_TEMPLATE.md 模板提交清晰的 PR 即可。理解这套工作流你也能顺带掌握 Pest 自身对代码质量与测试覆盖的高标准——这正是它在 PHP 测试框架中保持优雅与可靠的原因。赞分享测试【免费下载链接】pestThe elegant testing framework for PHP developers and AI agents.项目地址https://gitcode.com/GitHub_Trending/pe/pest点击查看免费下载相关推荐MoviePy 贡献指南从 Fork 到合并的完整开发者工作流MoviePy 贡献指南从 Fork 到合并的完整开发者工作流 导读 本文档基于 MoviePy 官方开发者指南 contribution_guideline音视频视频处理音频处理kube-prometheus 贡献指南从 Fork 到合入的完整协作工作流kube prometheus 贡献指南从 Fork 到合入的完整协作工作流 本篇技术指南以仓库根目录下的 CONTRIBUTING.md https://l云原生可观测性指标监控监控大盘告警Hugo 源码开发贡献指南从 Fork 到合并的完整工作流Hugo 源码开发贡献指南从 Fork 到合并的完整工作流 导读 本文是 HugoGo 编写的静态站点生成器源码贡献者的实战指南完整覆盖贡献方式、环境准开发工具前端CLI上一篇如何用Alpine.js实现高效分页控件初学者完整指南下一篇3步修好ROCm源错误Ubuntu 24.04干净装机到GPU验证跑通创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑