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 }