Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Production code imports `testing` package (`internal/config/config.go`, `internal/cmdparser/test.go`)

Aperta
#780 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
55/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
go
Ambito
testing-qa

Direzione di ricerca

Inizia leggendo internal/config/config.go e internal/cmdparser/test.go, quindi esamina i chiamanti cross-package dei relativi helper di test. Esegui il refactoring degli helper in modo che i file compilati per la produzione non importino più il package testing di Go, scegliendo tra input basati su stringhe e sottopackage di test dedicati. Il lavoro è completato quando quegli import sono stati rimossi e i test esistenti continuano a superare l'esecuzione.

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

Descrizione

Summary

internal/config/config.go and internal/cmdparser/test.go are non-_test.go files that import the standard library testing package, which is a Go anti-pattern — it pulls test-only code (and its transitive deps) into production builds.

Noted by @shueybubbles in https://github.com/microsoft/go-sqlcmd/pull/747#discussion_r3443879059.

Details

  • internal/config/config.go imports testing solely for SetFileNameForTest(t *testing.T), which only ever calls t.Name().
  • internal/cmdparser/test.go imports testing for TestSetup(t *testing.T) and related helpers.

Both files exist to provide test helpers callable from _test.go files in other packages, which is why they couldn't simply be renamed _test.go. However, the dependency on testing from production-compiled files is still undesirable.

Introduced in commit 10ee238 ("Modern CLI - Part 2"), long predating PR #747.

Suggested fix

Minimal-impact option:

  • Change config.SetFileNameForTest to accept a string (the test name) instead of *testing.T. Callers pass t.Name(). Drops the testing import from config.go.
  • Apply a similar refactor to cmdparser/test.go, or move its helpers into a dedicated cmdparsertest subpackage.

Larger option:

  • Move all cross-package test helpers into dedicated *test subpackages (e.g. internal/config/configtest, internal/cmdparser/cmdparsertest).
Lingua principale
Go
Stelle
595
Fork
91
Merge medio
9h 35m
PR unite (30g)
1

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

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 microsoft/go-sqlcmd

Tutte le issue di microsoft/go-sqlcmd

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.