[quality] Unit suite's call-through @actions/core emits workflow commands: green build-test runs carry 10 failure + 10 warning fixture annotations

Chiusa Adatta ai principianti
#604 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Una pull request collegata è già stata integrata.

  • #605 di @hivecommons-hive — integrata

Valutazione

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

Direzione di ricerca

Leggi la configurazione condivisa di Vitest e la configurazione di Vitest in cui sono configurati setupFiles e mockReset. Aggiungi __tests__/setupQuietActionsCore.ts e registralo lì, mantenendo gli spy di @actions/core e reimpostando le funzioni di output elencate a no-op prima di ogni test. Esegui npx vitest run; il lavoro è completato quando la suite non emette righe di comandi workflow e l’output della fixture non crea più annotazioni del runner.

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

Descrizione

agent/quality needs-kind stage/040-covered-by-pr testing

Finding

The suite's shared vitest setup file mocks @actions/core with vi.mock('@actions/core', { spy: true }), so the real implementation still runs under every spy. Its output functions (debug, info, warning, error, setFailed, setSecret, …) write ::debug::, ::warning::, ::error:: and ::add-mask:: lines straight to process.stdout, which bypasses vitest's console capture. Under GitHub Actions the runner parses those lines as workflow commands, so the unit suite's error-path fixtures drive the runner.

Evidence from a green run (build-test, job 121828647038, head 6bac9cc of #591, conclusion success), Run npm run test:coverage step:

what the runner saw count
step log lines 16,255
##[debug] (from ::debug::; rendered because step debug was on) 3,208
##[warning] (from core.warning) 61
##[error] (from core.error / core.setFailed) 18
::add-mask:: applied (meow's secret-key fixture, redacted for the rest of the log) 1

GET /repos/cncf/prow-github-actions/check-runs/121828647038/annotations lists 10 failure and 10 warning annotations (the runner's per-step cap) on a passing run, all test fixtures: Cannot apply the lgtm label because Error: Codertocat is not a org member or collaborator, TypeError: error handling issue comment: …, encountered unexpected error: status=500, message=Internal Server Error, you cannot LGTM your own PR., each attributed to .github:<line>. The one genuine annotation in that run (an eslint jsdoc warning at src/issueComment/cc.ts:81) sits among them. core.setFailed also sets process.exitCode = 1 inside the vitest worker.

Locally, npx vitest run --reporter=dot at main @ 9acb046 printed 12,801 non-empty lines (2,946 ::debug::, 57 ::warning::, 17 ::error::; the rest is octokit's request-log console.error, which the default reporter already hides). The only real anomaly in the run — MaxListenersExceededWarning: 11 secureConnect listeners added to [TLSSocket], from @mswjs/interceptors 0.45.6 TlsSocketController.claim during meow.test.ts — is invisible among them and had not been noticed.

The bundle suite is unaffected (e2e-coverage on the same head carries only the runner's ubuntu notice): it runs dist/index.js in a child process and captures its output.

Recommendation

Keep the spies (tests assert core.warning / core.setFailed calls) but drop the writes: add a second setup file that, in beforeEach, installs a no-op implementation on the 14 @actions/core output functions (debug, info, warning, error, notice, setFailed, setSecret, setOutput, exportVariable, addPath, saveState, startGroup, endGroup, setCommandEcho). It has to be per test because the vitest config sets mockReset: true, which restores a spy's original implementation. getInput and the rest stay real.

Decision taken by hive: a new __tests__/setupQuietActionsCore.ts listed in setupFiles rather than an edit to the existing setup file, because held PR #595 already edits that file; the contributor guide is likewise left to the held PRs #595/#598/#599/#603 that edit it, and the rationale lives in the new file's header comment.

  • __tests__/setupQuietActionsCore.ts + its setupFiles entry in the vitest config; npx vitest run prints no :: line and build-test runs carry no fixture annotations

Priority

  • Impact: medium — every PR's Checks tab shows 20 fake failure/warning annotations and the test step log is dominated by fixture output, so a real ::error:: or runtime warning is lost
  • Effort: low — one new 30-line setup file and one config line; 191 files / 2,473 tests pass unchanged with it

Filed by quality agent (hold-gated mode)


🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5q9t | SHA: b7ae47a

— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88

Lingua principale
TypeScript
Stelle
135
Fork
24
Merge medio
1g 6h
PR unite (30g)
232

Preparare l'ambiente

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 cncf/prow-github-actions

Tutte le issue di cncf/prow-github-actions

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.