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

发布时间:2026/10/2 17:23:45

Pest 贡献指南:从 Fork 到合入的完整开发工作流 测试【免费下载链接】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),仅供参考
延伸阅读

更多相关文章

2026/10/2 17:23:45

Cursor+MCP一键生成图表太爽了!5分钟学会,终身受用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 17:18:45

安卓Termux安装jellyfin(非udocker方法)

前言在Termux上直接搜索jellyfin是可以搜到有包的,但是直接安装后用不了,即使按照提示补全了. NET环境还是运行不了。在今年的年初我折腾过一段时间,后来选择了emby,因为emby有现成的server端安卓APP,但是不太稳定&…

2026/10/2 17:18:45

【linux内核专栏 05】中断与下半部

本篇定位:Linux 中断架构比裸机复杂得多——RISC-V 直接配 PLIC,Linux 要经 irq_domain 框架;FreeRTOS ISR 只能调 FromISR API,Linux 强制顶半部 下半部分离(顶半部不能睡不能耗时)。本篇把"Linux 中断"对你已知的 RISC-V trap/PLIC、FreeRTOS ISR 的增量讲透。读完…

2026/10/2 18:23:48

花卉识别大作业实战:Python+CNN从数据集到模型完整方案

简介:这份资源是面向高校学生与深度学习入门者的计算机视觉大作业完整方案,围绕Python、TensorFlow与CNN实现花卉图像识别,适合课程设计、期末大作业及新手练手参考。压缩包共13个文件,约10.82MB,以6个py源码文件为核心…

2026/10/2 18:23:48

前端开发必备软件清单:从零搭建一套稳定可复现的编程环境

前两天有个刚入行的小朋友问我,前端开发到底要装哪些软件。这个问题看着简单,认真回答起来其实挺费劲——网上搜一圈,推荐列表要么长到能把硬盘塞满,要么就一句“装个VS Code和Node.js就行”打发你。前者让人无从下手,…

2026/10/2 18:23:48

ComfyUI节点找不到?UltralyticsDetectorProvider安装排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 18:23:48

OpenCode实战指南:终端里的AI编程助手,从安装到进阶

如果你平时主要工作场景在终端,最近大概率听过 OpenCode 这个名字。简单说,它是一个跑在命令行里的 AI 编程助手,能直接读你项目里的文件、改代码、执行命令、跑测试,在终端里就能完成一整轮“理解需求→修改代码→运行验证”的闭…

2026/10/2 18:23:48

Docklight串口调试实战:RS232/RS485故障定位与协议解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 18:18:48

Kali Linux常见报错排查:从环境定位到虚拟机配置全攻略

很多人第一次接触Kali Linux,都是抱着“装个黑客工具包大杀四方”的心态来的。结果虚拟机一打开,还没等跑出几条命令,先是apt update连不上源,又是无线网卡识别不了,再折腾一下面板按钮全没了——半小时过去&#xff0…

2026/10/2 8:16:46

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/2 18:20:53

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 10:48:55

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/2 0:02:57

PWN入门:从栈溢出原理到ROP链实战

1. 这不是“学PWN”,是重新理解你每天敲的每一行C代码我第一次在CTF赛场上写出能控制程序流的exp时,手抖得连gdb的c命令都输错三次。那道题只有23行C代码,一个gets()调用,一个printf(),一个return——它甚至没开NX&…

2026/10/2 0:02:57

Windows下cudaMallocHost显存占用之谜:WDDM与TCC模式差异及优化方案

1. 一个反直觉的显存占用现象第一次在 Windows 上看到cudaMallocHost把显存吃掉的时候,我的反应是打开任务管理器反复确认了三遍。明明调用的是主机端锁页内存分配,按 CUDA 文档的说法,这块内存应该落在系统 RAM 里,跟 GPU 的显存…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑