1 files changed,
44 insertions(+),
6 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2026-06-04 13:05:42 +0300
Authored at:
2026-06-02 14:03:23 +0300
Change ID:
nyxvlypopmykxskzolvqzrlvqrupxwup
Parent:
8e80bf9
M
internal/testutil/golden/golden.go
··· 8 8 "testing" 9 9 ) 10 10 11 -var update = flag.Bool("update", false, "update golden files") 11 +var update = flag.Bool("golden.update", false, "update golden files") 12 + 13 +// Load reads testdata/<name>.input. Fails the test if the file is missing. 14 +func Load(t testing.TB, name string) []byte { 15 + t.Helper() 16 + path := filepath.Join("testdata", name+".input") 17 + data, err := os.ReadFile(path) 18 + if err != nil { 19 + t.Fatalf("reading input file %s: %v", path, err) 20 + } 21 + return data 22 +} 12 23 13 -func Assert(t *testing.T, got string) { 24 +func AssertInput(t testing.TB, got string, name string) { 25 + t.Helper() 26 + 27 + path := filepath.Join("testdata", name+".golden") 28 + if *update { 29 + if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { 30 + t.Fatalf("creating testdata dir: %v", err) 31 + } 32 + if err := os.WriteFile(path, []byte(got), 0o644); err != nil { 33 + t.Fatalf("writing golden file: %v", err) 34 + } 35 + return 36 + } 37 + 38 + golden, err := os.ReadFile(path) 39 + if os.IsNotExist(err) { 40 + t.Fatalf("no golden file %s, run with -golden.update:\n%s", path, got) 41 + } 42 + if err != nil { 43 + t.Fatalf("reading golden file: %v", err) 44 + } 45 + 46 + if string(golden) != got { 47 + t.Fatalf("golden mismatch for %s\nwant:\n%s\ngot:\n%s", path, string(golden), got) 48 + } 49 +} 50 + 51 +func Assert(t testing.TB, got string) { 14 52 t.Helper() 15 53 16 54 name := strings.NewReplacer("/", "__", " ", "_").Replace(t.Name()) 17 - name = strings.TrimLeft(name, "Test") 55 + name = strings.TrimPrefix(name, "Test") 18 56 path := filepath.Join("testdata", "golden", name+".golden") 19 57 20 58 if *update { 21 59 if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { 22 60 t.Fatalf("creating golden dir: %v", err) 23 61 } 24 - t.Logf("Saving golden file in %s", got) 62 + t.Logf("updated golden file: %s", path) 25 63 if err := os.WriteFile(path, []byte(got), 0o644); err != nil { 26 64 t.Fatalf("writing golden file: %v", err) 27 65 } ··· 30 68 31 69 golden, err := os.ReadFile(path) 32 70 if os.IsNotExist(err) { 33 - t.Fatalf("no golden file, run with -update:\n%s", got) 71 + t.Fatalf("no golden file %s, run with -golden.update:\n%s", path, got) 34 72 } 35 73 if err != nil { 36 74 t.Fatalf("reading golden file: %v", err) 37 75 } 38 76 39 77 if string(golden) != got { 40 - t.Fatalf("golden mismatch\nwant:\n%s\ngot:\n%s", string(golden), got) 78 + t.Fatalf("golden mismatch for %s\nwant:\n%s\ngot:\n%s", path, string(golden), got) 41 79 } 42 80 }