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  }