typestar

Archivos golden en Go

Comparar contra un archivo grabado, y regenerarlo detrás de un flag.

var update = flag.Bool("update", false, "rewrite golden files")

func Render(rows []string) string {
    return strings.Join(rows, "\n") + "\n"
}

func TestRenderGolden(t *testing.T) {
    got := Render([]string{"python 364", "rust 181"})
    golden := filepath.Join("testdata", "render.golden")

    if *update {
        if err := os.WriteFile(golden, []byte(got), 0o600); err != nil {
            t.Fatalf("write golden: %v", err)
        }
    }

    want, err := os.ReadFile(golden)
    if err != nil {
        t.Skipf("no golden file yet: %v", err)
    }
    if got != string(want) {
        t.Errorf("output changed:\ngot:\n%s\nwant:\n%s", got, want)
    }
}

Cómo funciona

  1. El flag hace que actualizar sea deliberado y no automático.
  2. Los archivos golden sirven para salida demasiado grande para ponerla en línea.
  3. Revisa el diff cuando actualices uno.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
24
Caracteres a escribir
580
Tokens
150
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 86 segundos.

Escribe este fragmento

Paso 3 de 3 en Fakes y fixtures; paso 7 de 13 en Pruebas.

← Anterior Siguiente →