Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Cerrado Apto para principiantes
#68,990 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
1/5
Tiempo estimado
Menos de una hora
Aptitud para principiantes
68/100
Tipo de issue
Refactorización
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
go
Área
testing

Línea de trabajo

El cambio está en pkg/console/golden_test.go en las líneas 340, 345, 350 y 355, donde []byte(bar.Update(...)) se pasa a golden.RequireEqual. Compara estas con las llamadas cercanas que ya pasan la cadena directamente, luego elimina los cuatro casts. Ejecuta go test ./pkg/console/... para confirmar que los fixtures golden siguen coincidiendo. Está terminado cuando los casts se hayan eliminado y las pruebas pasen sin regenerar ningún fixture.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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
Lenguaje dominante
Go
Estrellas
5.4k
Forks
584
Merge medio
3 h 26 min
PR fusionados (30 d)
822

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de github/gh-aw

Todos los issues de github/gh-aw

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.