github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/hasher/hasher_test.go (about)

     1  package hasher
     2  
     3  import (
     4  	"crypto/sha256"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  
    11  	"github.com/tilt-dev/tilt/internal/tiltfile/starkit"
    12  	"github.com/tilt-dev/tilt/internal/tiltfile/starlarkstruct"
    13  )
    14  
    15  const assertTilt = `
    16  def equals(expected, observed):
    17  	if expected != observed:
    18  		fail("expected: '%s'. observed: '%s'" % (expected, observed))
    19  
    20  assert = struct(equals=equals)
    21  `
    22  
    23  func hexSha256(x string) string {
    24  	return fmt.Sprintf("%x", sha256.Sum256([]byte(x)))
    25  }
    26  
    27  func TestHashesTiltfile(t *testing.T) {
    28  	f := newFixture(t)
    29  
    30  	contents := `print("Hello")`
    31  	f.File("Tiltfile", contents)
    32  
    33  	model, err := f.ExecFile("Tiltfile")
    34  	require.NoError(t, err)
    35  
    36  	state, err := GetState(model)
    37  	require.NoError(t, err)
    38  
    39  	hashes := state.GetHashes()
    40  	assert.Equal(t, hexSha256(contents), hashes.TiltfileSHA256)
    41  	assert.Equal(t, hexSha256(contents), hashes.AllFilesSHA256)
    42  }
    43  
    44  func TestHashesMultipleFiles(t *testing.T) {
    45  	f := newFixture(t)
    46  
    47  	contents := `load('assert.tilt', 'assert')
    48  message = "Hello"
    49  assert.equals(True, not '')
    50  `
    51  	f.File("Tiltfile", contents)
    52  
    53  	model, err := f.ExecFile("Tiltfile")
    54  	require.NoError(t, err)
    55  
    56  	state, err := GetState(model)
    57  	require.NoError(t, err)
    58  
    59  	hashes := state.GetHashes()
    60  	assert.Equal(t, hexSha256(contents), hashes.TiltfileSHA256)
    61  
    62  	hasher := sha256.New()
    63  	hasher.Write([]byte(contents))
    64  	hasher.Write([]byte(assertTilt))
    65  	assert.Equal(t, fmt.Sprintf("%x", hasher.Sum(nil)), hashes.AllFilesSHA256)
    66  }
    67  
    68  func newFixture(t *testing.T) *starkit.Fixture {
    69  	f := starkit.NewFixture(t, NewPlugin(), starlarkstruct.NewPlugin())
    70  	f.File("assert.tilt", assertTilt)
    71  	return f
    72  }