[go-fan] Go Module Review: testify

已关闭 适合新手
#74,450 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
1/5
预计耗时
1 小时以内
新手友好度
65/100
Issue 类型
文档
描述清晰度
描述清楚
活跃度
活跃
技术栈
go
领域
documentation

调研方向

唯一提议的改动是修改 docs/adr/47252-testify-error-assertion-conventions.md 中的状态,该文件目前写的是 Status: Draft。打开该文件,在将状态行改为 Accepted 之前,检查其中描述的迁移是否与 .golangci.yml 中的 testifylint 配置一致。完成的标准是 ADR 显示 Accepted,且文档中的其他内容保持不变。

由索引模型根据 Issue 内容生成。

描述

automation cookie
Module Overview

github.com/stretchr/testify is Go's most widely used test-tooling library, providing assert/require for fluent assertions plus optional mock/suite packages. It's permanently frozen at v1 (no v2 planned — discussion #1560).

Current Usage in gh-aw
  • Files: require imported in 1362 _test.go files; assert in 1284 _test.go files — test-only, as expected (no production code imports it).
  • Call volume: ~26,575 assert.* calls, ~26,811 require.* calls.
  • Key APIs: Equal (12,825), NoError (15,111), ErrorContains/ErrorIs/EqualError (1,874 across 510 files), InDelta/JSONEq/YAMLEq (609 across 152 files), Eventually/EventuallyWithT/CollectT (13 across 7 files).
  • Not used: mock, suite — zero imports. Given t.Parallel() appears 4,714 times across 693 files, and testify's own README flags suite as unsupported for parallel tests (#934), skipping suite here is correct.
Research Findings

Current version in go.mod (v1.12.1) already matches the latest upstream release.

Recent Updates

v1.12.1 (2026-08-19) swapped testify's internal YAML dependency from the old gopkg.in/yaml.v3 fork to go.yaml.in/yaml/v3, shrinking testify's own dependency footprint to just go.yaml.in/yaml/v3 and the dependency-free stretchr/objx. No breaking changes — v1 is frozen; all improvements land as additive minor releases.

Best Practices

Maintainers recommend testifylint (via golangci-lint) to catch common misuse.

Improvement Opportunities

🏃 Quick Wins

.golangci.yml already enables testifylint with enable-all: true — the strictest setting, matching upstream's own recommendation. One loose end: docs/adr/47252-testify-error-assertion-conventions.md documents the ErrorContains/require.* migration (already merged and enforced by that lint rule, confirmed live with 1,874 ErrorContains/ErrorIs/EqualError call sites) but is still marked Status: Draft. Since the enforcement is live in CI and the described migration already landed, this ADR should be moved to Accepted.

✨ Feature Opportunities

None identified as required — the project already tracks testify's own recommended linter config at its strictest setting.

📐 Best Practice Alignment

Already strong across the board:

  • testifylint enable-all: true is live.
  • ErrorContains is used instead of the panic-prone assert.Contains(t, err.Error(), ...) pattern (eliminates nil-deref crashes on a nil err).
  • mock/suite are correctly avoided in favor of real fixtures and parallel subtests, which fits this codebase's heavy use of t.Parallel().
🔧 General Improvements

No further action identified beyond finalizing the ADR status above — testify usage here is mature and already follows upstream guidance closely.

Recommendations

  1. Move docs/adr/47252-testify-error-assertion-conventions.md from Status: Draft to Status: Accepted — the migration it describes is already merged and enforced by CI lint.

Next Steps

  • Finalize ADR-47252's status.
  • No dependency action needed; testify is already pinned to the latest release.

Generated by Go Fan
Module summary saved to: scratchpad/mods/testify.md

Generated by 🐹 Go Fan · claude · agent · ~80 AIC · ⌖ ~1 AIC · ⊞ 4.5K · ◷

  • expires on Nov 4, 2026, 12:07 AM UTC-08:00
主要语言
Go
星标
5.6k
派生
615
平均合并
5 小时 36 分钟
30 天内合并 PR
805

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

  • 提供 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

github/gh-aw 的其他 Issue

查看 github/gh-aw 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。