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  }