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

[testify-expert] Improve Test Quality: pkg/workflow/unquote_uses_test.go

Abierto Apto para principiantes
#65,635 0 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
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Refactorización
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
go
Área
testing

Línea de trabajo

Empieza leyendo pkg/workflow/unquote_uses_test.go junto con el código fuente pkg/workflow/compiler_yaml_step_conversion.go, especialmente unquoteUsesWithComments e injectZizmorUnverifiedCreatorAnnotations. Ejecuta go test ./pkg/workflow/ -run 'UnquoteUses|Zizmor' para establecer la línea base, luego trabaja a través de la lista de verificación de aceptación: cambia t.Errorf manual por testify assert/require, añade los casos faltantes de formatStepEnvValueForYAML y ConvertStepToYAML, genera la tabla de prefijos a partir de unverifiedCreatorActionPrefixes y renombra el archivo. Terminado cuando make test-unit pasa con todos los casos nuevos presentes.

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

Descripción

automated-analysis code-quality cookie testing
Current State
  • Test file: pkg/workflow/unquote_uses_test.go (280 LOC, 4 test functions, 0 assert/require usages; all checks use if got != want { t.Errorf })
  • Source file: pkg/workflow/compiler_yaml_step_conversion.go (functions: injectZizmorUnverifiedCreatorAnnotations, ConvertStepToYAML, unquoteUsesWithComments, (*Compiler).renderStepFromMap, formatStepEnvValueForYAML)
Strengths
  • Already table-driven with descriptive case names.
  • Good edge cases for malformed/unclosed quotes and hash-without-space.
  • Realistic multi-step YAML inputs.
Prioritized Improvements
1. Missing / high-value tests
  • injectZizmorUnverifiedCreatorAnnotations has only 3 cases. Add:
    • every entry in unverifiedCreatorActionPrefixes (iterate the slice so new prefixes are auto-covered),
    • a verified action (actions/checkout@...) gets no annotation,
    • tab indentation and - uses: (list-item form; currently TrimLeft + CutPrefix("uses: ") would NOT match - uses: safedep/..., so document or fix the expected behaviour),
    • a quoted value (uses: "safedep/pmg@sha") — does it match the prefix?,
    • empty input and idempotency (running twice should not double-inject, or the test should pin that it does).
  • ConvertStepToYAML and formatStepEnvValueForYAML have no direct tests in this file (only indirect ones in compiler_generation_test.go / multiline_test.go). Add a small table for formatStepEnvValueForYAML (string, bool, int, multi-line, string needing quoting) and a ConvertStepToYAML case checking that uses with a # v6 comment ends up unquoted end-to-end.
  • unquoteUsesWithComments: add CRLF input, uses: 'single-quoted # v1', and uses: "..." with extra spaces. The "multiple quotes on same line" case pins a questionable behaviour; add a comment saying it is intentional.
2. Testify assertion upgrades
Before / after
// Before
if result != tt.expected {
    t.Errorf("unquoteUsesWithComments() = %q, want %q", result, tt.expected)
}

// After
assert.Equal(t, tt.expected, unquoteUsesWithComments(tt.input), "unquoteUsesWithComments should produce expected YAML")

Add "github.com/stretchr/testify/assert" to imports; use require.NoError for ConvertStepToYAML errors. Replacing the multi-line Got/Want messages also yields better diffs.

3. Table-driven refactors
  • The three unquoteUsesWithComments tests (TestUnquoteUsesWithComments, ...EdgeCases, ...RealWorldExamples) share an identical struct and loop. Merge into one table (or keep three with a shared helper) and t.Parallel() per subtest.
  • Build unverifiedCreatorActionPrefixes cases from the slice rather than hard-coding.
4. Organization / readability
  • File name unquote_uses_test.go also tests injectZizmorUnverifiedCreatorAnnotations; rename to compiler_yaml_step_conversion_test.go to match the source file.
  • Use named raw-string constants for the repeated SHA pins to shorten cases.
Acceptance Checklist
  • testify assert/require used instead of manual t.Errorf comparisons
  • New tests for the gaps listed in section 1
  • Tables merged / generated from unverifiedCreatorActionPrefixes
  • File renamed to match source file
  • make test-unit passes

Generated by 🧪 Daily Testify Uber Super Expert · copilot · auto · 15.3 AIC · ⌖ 9.64 AIC · ⊞ 7.3K · ◷

  • expires on Oct 6, 2026, 10:22 AM UTC-08:00
Lenguaje dominante
Go
Estrellas
5.3k
Forks
568
Merge medio
8 h 59 min
PR fusionados (30 d)
722

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.