[testify-expert] Improve Test Quality: pkg/cli/codemod_copilot_web_fetch_test.go

Aperta Adatta ai principianti
#74,912 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
github-actions, go
Ambito
testing

Direzione di ricerca

Leggi pkg/cli/codemod_copilot_web_fetch_test.go insieme a pkg/cli/codemod_copilot_web_fetch.go e al relativo pkg/cli/codemod_copilot_web_search_test.go. Inizia dai casi mancanti di isNestedWorkflowFragment e dai casi di parità della ricerca web, poi controlla il frontmatter malformato e il comportamento con motori diversi da Copilot. Il lavoro è completato quando i test aggiunti coprono i casi elencati e passano con il comando di test esistente del package.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

automated-analysis code-quality cookie enhancement report safe-outputs testing workflows
Current State
  • Test file: pkg/cli/codemod_copilot_web_fetch_test.go (316 LOC, 7 test functions, 3 t.Run)
  • Source: pkg/cli/codemod_copilot_web_fetch.go (getCopilotWebFetchRemovalCodemod, getCopilotWebSearchRemovalCodemod, applyCopilotWebToolRemoval, isNestedWorkflowFragment)
  • testify: already uses assert (21) and require (25); t.Parallel() used.
Strengths
  • Good require-for-preconditions / assert-for-values split.
  • Idempotency check (apply twice) in _Apply.
  • Covers included-engine resolution and failure-preserves-setting paths.
Prioritized improvements
1. Missing / high-value tests
  • isNestedWorkflowFragment has no direct test. Add a table test: "", .github/workflows/a.md (false), .github/workflows/shared/a.md (true), workflows/a.md (false), a/b.md without workflows (false), Windows-style separators, paths with ...
  • getCopilotWebSearchRemovalCodemod metadata (ID copilot-web-search-removal, IntroducedIn) and the web-search branch of applyCopilotWebToolRemoval are only covered in codemod_copilot_web_search_test.go; add a shared table over both codemods (tool key param) to guarantee parity.
  • Error path: Apply with malformed frontmatter / tools of non-map type should return unchanged content without error (assert explicitly).
  • Non-Copilot engine (e.g. claude) with web-fetch: true must be left unchanged.
2. Testify assertion upgrades
  • Metadata test: use assert.NotNil -> require.NotNil before invoking (already done) and add assert.Equal on Name/Description non-empty via assert.NotEmpty (present) — consider also asserting ID uniqueness against the registry (assert.Len of IDs set).
  • Use assert.Equal(t, updated, updatedAgain) -> assert.Equal is fine; prefer assert.YAMLEq only for frontmatter fragments, keep exact string equality for full-file output.
  • Add messages to key require.True(t, applied, "codemod should apply") for easier failure diagnosis.
3. Table-driven refactors

_CompatibleInputsAreUnchanged and _YAMLFormsAndLiteralText (lines ~67-220) are candidates for []struct{name, content, frontmatter, want, wantApplied} with t.Run(tt.name, ...) and t.Parallel() per subtest.

Before:

updated, applied, err := codemod.Apply(content, fm)
require.NoError(t, err)
assert.False(t, applied)

After:

for _, tt := range tests {
    t.Run(tt.name, func(t *testing.T) {
        t.Parallel()
        got, applied, err := codemod.Apply(tt.content, tt.fm)
        require.NoError(t, err)
        assert.Equal(t, tt.wantApplied, applied)
        assert.Equal(t, tt.want, got)
    })
}
4. Organization / readability
  • Extract a small helper for building engine/tools frontmatter maps to cut repeated literals.
  • Name tests by behavior (e.g. _RemovesWebFetchWithCopilotEngine).
  • Group file-resolution tests (ResolvesIncludedEngine, PreservesSettingWhenEngineResolutionFails) using shared temp-dir setup helper.

Generated by 🧪 Daily Testify Uber Super Expert · copilot · auto (powered by Gemini 3.8 Flash) · ~14 AIC · ⌖ ~1 AIC · ⊞ 9.2K · ◷

  • expires on Nov 6, 2026, 10:05 AM UTC-08:00
Lingua principale
Go
Stelle
5.6k
Fork
615
Merge medio
5h 19m
PR unite (30g)
798

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di github/gh-aw

Tutte le issue di github/gh-aw

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.