github.com/triarius/goreleaser@v1.12.5/internal/golden/golden.go (about) 1 // Package golden asserts golden files contents. 2 package golden 3 4 import ( 5 "flag" 6 "os" 7 "path/filepath" 8 "testing" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 var update = flag.Bool("update", false, "update .golden files") 14 15 const golden = ".golden" 16 17 func RequireEqual(tb testing.TB, out []byte) { 18 tb.Helper() 19 RequireEqualExt(tb, out, "") 20 } 21 22 func RequireEqualExt(tb testing.TB, out []byte, ext string) { 23 tb.Helper() 24 doRequireEqual(tb, out, ext, golden) 25 } 26 27 func RequireEqualTxt(tb testing.TB, out []byte) { 28 tb.Helper() 29 doRequireEqual(tb, out, ".txt", golden) 30 } 31 32 func RequireEqualJSON(tb testing.TB, out []byte) { 33 tb.Helper() 34 doRequireEqual(tb, out, ".json", golden) 35 } 36 37 func RequireEqualRb(tb testing.TB, out []byte) { 38 tb.Helper() 39 doRequireEqual(tb, out, ".rb", golden) 40 } 41 42 func RequireEqualYaml(tb testing.TB, out []byte) { 43 tb.Helper() 44 doRequireEqual(tb, out, ".yaml", "") 45 } 46 47 func RequireReadFile(tb testing.TB, path string) []byte { 48 tb.Helper() 49 bts, err := os.ReadFile(path) 50 require.NoError(tb, err) 51 return bts 52 } 53 54 func doRequireEqual(tb testing.TB, out []byte, ext, suffix string) { 55 tb.Helper() 56 57 golden := "testdata/" + tb.Name() + ext + suffix 58 if *update { 59 require.NoError(tb, os.MkdirAll(filepath.Dir(golden), 0o755)) 60 require.NoError(tb, os.WriteFile(golden, out, 0o655)) 61 } 62 63 gbts, err := os.ReadFile(golden) 64 require.NoError(tb, err) 65 66 require.Equal(tb, string(gbts), string(out)) 67 }