Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[go-fan] Go Module Review: github.com/charmbracelet/x/exp/golden

クローズ 初心者向け
#68,990 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
1/5
見積もり時間
1時間未満
初心者へのやさしさ
68/100
issue の種類
リファクタリング
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
go
領域
testing

調査の方向性

変更対象は pkg/console/golden_test.go の 340、345、350、355 行目です。ここでは []byte(bar.Update(...)) が golden.RequireEqual に渡されています。近くで文字列を直接渡している既存の呼び出しと比較し、4 つのキャストを削除してください。go test ./pkg/console/... を実行し、golden フィクスチャが引き続き一致することを確認します。キャストが削除され、フィクスチャを再生成せずにテストが通れば完了です。

索引モデルが issue の本文から書いたものです。

説明

automation cookie

🐹 Go Fan Report: github.com/charmbracelet/x/exp/golden

Module Overview

golden is a tiny (~90 LOC) golden-file testing helper from the charmbracelet/x monorepo. It exposes one generic function, RequireEqual[T []byte | string](tb, out), that diffs test output against a testdata/<TestName>.golden fixture (escaping control/ANSI sequences before comparing), and can regenerate fixtures when run with -update.

Current Usage in gh-aw
  • Files: 2 (pkg/console/golden_test.go, pkg/workflow/wasm_golden_test.go)
  • Import Count: 2
  • Call sites: 14 total (11 + 3)
  • Key APIs Used: golden.RequireEqual only (current, non-deprecated API)
  • Golden regeneration is already wired into make update-golden and make update-wasm-golden, both passing -update - exactly the workflow the module documents.
Research Findings

exp/golden/v0.1.0 (pinned in go.mod) is the only tag ever cut for this submodule and remains the latest release, even though the parent charmbracelet/x monorepo is very active (most recent push 2026-10-12, on an unrelated submodule). Nothing to upgrade to.

Recent Updates

All already baked into the pinned v0.1.0 tag:

  • feat(exp/golden): accept strings on RequireEqual (2025-06-02) - added generics so callers no longer need to wrap string output in []byte(...).
  • RequireEqualEscape was deprecated in favor of RequireEqual (escaping is now always on by default).
  • No security advisories or breaking changes found.
Best Practices

Maintainers recommend calling RequireEqual directly with either string or []byte output (no manual conversion needed since generics landed), and exposing a -update test flag/make target for fixture regeneration.

Improvement Opportunities

🏃 Quick Wins

pkg/console/golden_test.go:340,345,350,355 still wrap ProgressBar.Update(...) (which returns string) in an unnecessary []byte(...) conversion before calling golden.RequireEqual. Every other call site in the same file (RenderTable, FormatError, RenderInfoSection, etc.) already passes the string directly. Dropping these 4 remaining casts removes a small unneeded allocation per call and makes the file internally consistent:

Affected lines
// pkg/console/golden_test.go
340:  golden.RequireEqual(t, []byte(bar.Update(0)))
345:  golden.RequireEqual(t, []byte(bar.Update(512*1024*1024)))
350:  golden.RequireEqual(t, []byte(bar.Update(1024)))
355:  golden.RequireEqual(t, []byte(bar.Update(0)))

Change each to golden.RequireEqual(t, bar.Update(...)).

✨ Feature Opportunities

None currently applicable - the only tagged release (v0.1.0) already contains every feature gh-aw relies on (string support, escaping, Windows CRLF normalization), and there is no newer upstream tag to adopt.

📏 Best Practice Alignment
  • Golden regeneration already follows the documented -update flag pattern via dedicated make targets.
  • No usage of the deprecated RequireEqualEscape was found anywhere in the codebase.
🔧 General Improvements

pkg/workflow/wasm_golden_test.go runs its own normalizeOutput helper (stripping env-specific flags, trimming trailing newlines) before calling RequireEqual. This is project-specific normalization and does not overlap with what the library provides (control-sequence escaping, CRLF normalization) - no redundancy to clean up.

Recommendations

  1. Apply the quick win above (drop the 4 redundant []byte(...) casts in pkg/console/golden_test.go) - small, safe, mechanical cleanup.
  2. No version bump or feature adoption needed; the module is already on its latest (and only) release and is used idiomatically elsewhere in the codebase.

Next Steps

No further action needed beyond the quick win above; re-review this module once charmbracelet/x/exp/golden cuts a new tag (none exists yet beyond v0.1.0).


Generated by Go Fan
Module summary saved to: scratchpad/mods/charmbracelet-x-exp-golden.md

Generated by 🐹 Go Fan · claude · agent · 126.8 AIC · ⊞ 6.5K · ◷

  • expires on Oct 16, 2026, 12:05 AM UTC-08:00
主要言語
Go
スター
5.4k
フォーク
584
平均マージ
3時間 38分
マージ済み PR(30日)
826

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

github/gh-aw のほかの issue

github/gh-aw の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。