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),仅供参考

相关新闻

聚氨酯发泡成品率为何总卡在瓶颈?拆解组合料落地选型的3大核心痛点》

聚氨酯发泡成品率为何总卡在瓶颈?拆解组合料落地选型的3大核心痛点》

在聚氨酯材料应用领域,组合料的品质直接决定下游制品的成型效率、物理性能与综合成本。小到冷链保温箱的硬泡发泡成型,大到汽车内饰软泡的一体注塑,哪怕组合料黏度产生 5% 的微小漂移,都可能引发气泡、收缩或脱模缺陷,…

2026/10/2 17:22:40 阅读更多 →
给 Coding Agent 加长期记忆——MemoraX Code 先解决哪几个重复问题?

给 Coding Agent 加长期记忆——MemoraX Code 先解决哪几个重复问题?

在 MemoraX Code 这类编码 Agent 上接长期记忆,最先该解决的通常不是“所有重复提问”,而是跨会话稳定复现的那几类:技术栈与版本约束、目录与分层约定、命令与脚本用法、代码风格与命名。判断优先级的方法很直接——看最近若干次会话里&…

2026/10/2 17:22:40 阅读更多 →
OpenShell实战指南:还原高效Windows开始菜单与资源管理器

OpenShell实战指南:还原高效Windows开始菜单与资源管理器

如果你和我一样,每天要在一台Windows电脑上处理大量文件、软件、系统设置,对新版系统那个自带开始菜单越用越不顺手,那OpenShell这名字你应该不陌生。它最早叫Classic Shell,后来项目源码开源、社区接手后更名为Open-Shell&#x…

2026/10/2 17:22:40 阅读更多 →

最新新闻

SAP PLM与西门子PLM选型:聚焦BOM与ECN的语义集成

SAP PLM与西门子PLM选型:聚焦BOM与ECN的语义集成

/* 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:55:57 阅读更多 →
Go 后端 UUID 生成与解析实战:基于 nakama 中 gofrs/uuid v5 的完整指南

Go 后端 UUID 生成与解析实战:基于 nakama 中 gofrs/uuid v5 的完整指南

后端即时通讯社交游戏开发 【免费下载链接】nakama Scalable open-source game backend server: multiplayer, matchmaking, leaderboards, chat, and social features for games. 项目地址: https://gitcode.com/GitHub_Trending/na/nakama 点击查看 免费下载 导读…

2026/10/2 17:55:57 阅读更多 →
tailcat 发布流程完全指南:从 SSH 签名 Tag 到 GoReleaser 自动构建发布

tailcat 发布流程完全指南:从 SSH 签名 Tag 到 GoReleaser 自动构建发布

【免费下载链接】tailcat like netcat, but over Tailscales data plane, without Tailscales control plane 项目地址: https://gitcode.com/GitHub_Trending/ta/tailcat 点击查看 免费下载 本文是 tailcat(基于 Tailscale 数据面、无需控制面的 netca…

2026/10/2 17:55:57 阅读更多 →
type-challenges 中等题 02257:用类型体操实现 MinusOne(正整数减一)

type-challenges 中等题 02257:用类型体操实现 MinusOne(正整数减一)

示例工程 【免费下载链接】type-challenges Collection of TypeScript type challenges with online judge 项目地址: https://gitcode.com/GitHub_Trending/ty/type-challenges 点击查看 免费下载 导读 MinusOne 是 type-challenges 仓库中一道 medium 难度、mat…

2026/10/2 17:55:57 阅读更多 →
Art Design Pro 快速上手:Vue 3 + Vite + TypeScript 后台管理模板的安装、精简与开发实战指南

Art Design Pro 快速上手:Vue 3 + Vite + TypeScript 后台管理模板的安装、精简与开发实战指南

前端企业应用UI组件 【免费下载链接】art-design-pro A Vue 3 admin dashboard template using Vite TypeScript Element Plus | vue3 admin | vue-admin — focused on user experience and visual design. 项目地址: https://gitcode.com/GitHub_Trending/ar/ar…

2026/10/2 17:55:57 阅读更多 →
递推最小二乘法RLS:公式推导、遗忘因子与工程实现要点

递推最小二乘法RLS:公式推导、遗忘因子与工程实现要点

/* 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:54:57 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

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

如何划分训练/验证集: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 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

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

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

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* 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 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* 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 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* 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 6:09:11 阅读更多 →