Standardize go:generate for controller mocks + CI drift validation

Abierto
#2,707 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
62/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
github-actions, go

Línea de trabajo

Comienza inspeccionando los paquetes de controladores listados, internal/windows/mock, internal/gcs/mock y cmd/containerd-shim-lcow-v2/service en busca de directivas existentes para la generación de mocks. Lee .github/workflows/ci.yml y CONTRIBUTING.md, y luego ejecuta go generate ./... para identificar el diff de los archivos generados. Se considera terminado cuando cada paquete listado tiene una directiva en un archivo de pruebas, un clon nuevo permanece limpio, CI detecta las desviaciones y el flujo de trabajo de regeneración está documentado.

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

Descripción

Background

Per @rawahars's review on #2647: the go:generate directive should reside in the test file, and we should validate generated mocks in CI.

Goals

  1. Add a //go:generate directive (in a TEST file) for each controller that has mocks.
  2. Add CI validation that runs go generate ./... and fails if there is any diff against the committed mock files. This catches mock drift when interfaces change but mocks are not regenerated.

Affected packages

  • internal/controller/device/scsi/
  • internal/controller/device/plan9/
  • internal/controller/device/vpci/
  • internal/controller/network/
  • internal/controller/vm/
  • internal/windows/ (mock at internal/windows/mock/)
  • internal/gcs/ (GuestDefinedCapabilities mock at internal/gcs/mock/)
  • cmd/containerd-shim-lcow-v2/service/

Future controllers should follow the same convention.

Suggested CI step

Extend an existing lint job in .github/workflows/ci.yml:

- name: Verify generated mocks are up to date
  run: |
    go generate ./...
    git diff --exit-code -- '*/mocks/*.go' '*/mock/*.go'

Run on windows-latest so build tags resolve correctly.

Acceptance criteria

  • Each listed package has a //go:generate directive in a test file
  • go generate ./... produces no diff against committed mocks on a fresh clone
  • CI fails if a contributor changes an interface without regenerating
  • CONTRIBUTING.md (or equivalent) documents the regeneration workflow

Notes

Discussed in #2647 (review on internal/controller/network/network_lcow.go).

Lenguaje dominante
Go
Estrellas
694
Forks
304
Merge medio
1 d 19 h
PR fusionados (30 d)
28

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

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 microsoft/hcsshim

Todos los issues de microsoft/hcsshim

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.