github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/io/io_test.go (about) 1 package io 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/tilt-dev/tilt/internal/testutils" 9 "github.com/tilt-dev/tilt/internal/tiltfile/starkit" 10 "github.com/tilt-dev/tilt/internal/tiltfile/starlarkstruct" 11 ) 12 13 func TestReadFile(t *testing.T) { 14 f := newFixture(t) 15 16 f.File("foo.txt", "foo") 17 f.File("Tiltfile", ` 18 s = read_file('foo.txt') 19 20 load('assert.tilt', 'assert') 21 22 assert.equals('foo', str(s)) 23 `) 24 25 _, err := f.ExecFile("Tiltfile") 26 require.NoError(t, err) 27 } 28 29 func TestReadFileDefault(t *testing.T) { 30 f := newFixture(t) 31 32 f.File("Tiltfile", ` 33 s = read_file('dne.txt', 'foo') 34 35 load('assert.tilt', 'assert') 36 37 assert.equals('foo', str(s)) 38 `) 39 40 _, err := f.ExecFile("Tiltfile") 41 require.NoError(t, err) 42 } 43 44 func TestReadFileDefaultEmptyString(t *testing.T) { 45 f := newFixture(t) 46 47 f.File("Tiltfile", ` 48 s = read_file('dne.txt', '') 49 50 load('assert.tilt', 'assert') 51 52 assert.equals('', str(s)) 53 `) 54 55 _, err := f.ExecFile("Tiltfile") 56 require.NoError(t, err) 57 } 58 59 // make sure we generate an error on invalid type for default even if the file exists 60 func TestReadFileInvalidDefaultFileExists(t *testing.T) { 61 f := newFixture(t) 62 63 f.File("foo.txt", "foo") 64 f.File("Tiltfile", ` 65 s = read_file('foo.txt', 5) 66 `) 67 68 _, err := f.ExecFile("Tiltfile") 69 require.Error(t, err) 70 require.Contains(t, err.Error(), "parameter default: expected starlark.String or None, got starlark.Int") 71 } 72 73 func TestReadFileMissing(t *testing.T) { 74 f := newFixture(t) 75 76 f.File("Tiltfile", ` 77 s = read_file('dne.txt') 78 `) 79 80 _, err := f.ExecFile("Tiltfile") 81 require.Error(t, err) 82 testutils.AssertIsNotExist(t, err) 83 require.Contains(t, err.Error(), "dne.txt") 84 } 85 86 func newFixture(t *testing.T) *starkit.Fixture { 87 f := starkit.NewFixture(t, NewPlugin(), starlarkstruct.NewPlugin()) 88 f.UseRealFS() 89 f.File("assert.tilt", ` 90 def equals(expected, observed): 91 if expected != observed: 92 fail("expected: '%s'. observed: '%s'" % (expected, observed)) 93 94 assert = struct(equals=equals) 95 `) 96 return f 97 }