github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/telemetry/telemetry_test.go (about) 1 package telemetry 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/tilt-dev/tilt/pkg/model" 8 9 "github.com/stretchr/testify/assert" 10 11 "github.com/tilt-dev/tilt/internal/tiltfile/starkit" 12 ) 13 14 func TestTelemetryCmdString(t *testing.T) { 15 f := newFixture(t) 16 f.File("Tiltfile", "experimental_telemetry_cmd('foo.sh')") 17 result, err := f.ExecFile("Tiltfile") 18 19 assert.NoError(t, err) 20 assert.Equal(t, model.ToHostCmdInDir("foo.sh", f.Path()), MustState(result).Cmd) 21 assert.Equal(t, model.DefaultTelemetryPeriod, MustState(result).Period) 22 } 23 24 func TestTelemetryPeriod(t *testing.T) { 25 f := newFixture(t) 26 f.File("Tiltfile", "experimental_telemetry_cmd('foo.sh', period='5s')") 27 28 result, err := f.ExecFile("Tiltfile") 29 assert.NoError(t, err) 30 assert.Equal(t, 5*time.Second, MustState(result).Period) 31 } 32 33 func TestTelemetryCmdArray(t *testing.T) { 34 f := newFixture(t) 35 f.File("Tiltfile", "experimental_telemetry_cmd(['foo.sh'])") 36 result, err := f.ExecFile("Tiltfile") 37 38 assert.NoError(t, err) 39 assert.Equal(t, model.Cmd{Argv: []string{"foo.sh"}, Dir: f.Path()}, MustState(result).Cmd) 40 } 41 42 func TestTelemetryCmdEmpty(t *testing.T) { 43 f := newFixture(t) 44 f.File("Tiltfile", "experimental_telemetry_cmd('')") 45 _, err := f.ExecFile("Tiltfile") 46 47 assert.EqualError(t, err, "cmd cannot be empty") 48 } 49 50 func TestTelemetryCmdMultiple(t *testing.T) { 51 f := newFixture(t) 52 f.File("Tiltfile", ` 53 experimental_telemetry_cmd('foo.sh') 54 experimental_telemetry_cmd('bar.sh') 55 `) 56 _, err := f.ExecFile("Tiltfile") 57 assert.EqualError(t, err, "experimental_telemetry_cmd called multiple times; already set to foo.sh") 58 } 59 60 func newFixture(tb testing.TB) *starkit.Fixture { 61 return starkit.NewFixture(tb, NewPlugin()) 62 }