github.com/ahmet2mir/goreleaser@v0.180.3-0.20210927151101-8e5ee5a9b8c5/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 func RequireEqual(tb testing.TB, out []byte) { 16 tb.Helper() 17 doRequireEqual(tb, out, "") 18 } 19 20 func RequireEqualTxt(tb testing.TB, out []byte) { 21 tb.Helper() 22 doRequireEqual(tb, out, ".txt") 23 } 24 25 func RequireEqualJSON(tb testing.TB, out []byte) { 26 tb.Helper() 27 doRequireEqual(tb, out, ".json") 28 } 29 30 func RequireEqualRb(tb testing.TB, out []byte) { 31 tb.Helper() 32 doRequireEqual(tb, out, ".rb") 33 } 34 35 func RequireEqualYaml(tb testing.TB, out []byte) { 36 tb.Helper() 37 doRequireEqual(tb, out, ".yml") 38 } 39 40 func doRequireEqual(tb testing.TB, out []byte, ext string) { 41 tb.Helper() 42 43 golden := "testdata/" + tb.Name() + ext + ".golden" 44 if *update { 45 require.NoError(tb, os.MkdirAll(filepath.Dir(golden), 0o755)) 46 require.NoError(tb, os.WriteFile(golden, out, 0o655)) 47 } 48 49 gbts, err := os.ReadFile(golden) 50 require.NoError(tb, err) 51 52 require.Equal(tb, string(gbts), string(out)) 53 }