github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/version/version_test.go (about) 1 package version 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "github.com/tilt-dev/tilt/internal/tiltfile/starkit" 10 "github.com/tilt-dev/tilt/pkg/model" 11 ) 12 13 func TestEmpty(t *testing.T) { 14 f := NewFixture(t) 15 f.File("Tiltfile", ` 16 `) 17 result, err := f.ExecFile("Tiltfile") 18 require.NoError(t, err) 19 require.True(t, MustState(result).CheckUpdates) 20 } 21 22 func TestCheckUpdatesFalse(t *testing.T) { 23 f := NewFixture(t) 24 f.File("Tiltfile", ` 25 version_settings(check_updates=False) 26 `) 27 result, err := f.ExecFile("Tiltfile") 28 require.NoError(t, err) 29 require.False(t, MustState(result).CheckUpdates) 30 } 31 32 func TestCheckUpdatesTrue(t *testing.T) { 33 f := NewFixture(t) 34 f.File("Tiltfile", ` 35 version_settings(check_updates=True) 36 `) 37 result, err := f.ExecFile("Tiltfile") 38 require.NoError(t, err) 39 require.True(t, MustState(result).CheckUpdates) 40 } 41 42 func TestVersionConstraints(t *testing.T) { 43 for _, tc := range []struct { 44 constraint string 45 meets bool 46 }{ 47 {">=0.5.4", false}, 48 {"<=0.5.2", false}, 49 {"<=0.3.0", false}, 50 {">=0.5.0 <0.5.3", false}, 51 {"=0.5.3", true}, 52 {">0.4.1", true}, 53 {"0.5.x", true}, 54 } { 55 var verb string 56 if tc.meets { 57 verb = "meets" 58 } else { 59 verb = "doesn't meet" 60 } 61 t.Run(fmt.Sprintf("version %s constraint %s", verb, tc.constraint), func(t *testing.T) { 62 f := NewFixture(t) 63 f.File("Tiltfile", fmt.Sprintf(` 64 version_settings(constraint='%s') 65 `, tc.constraint)) 66 _, err := f.ExecFile("Tiltfile") 67 if tc.meets { 68 require.NoError(t, err) 69 } else { 70 require.Error(t, err) 71 require.Contains(t, err.Error(), TestingVersion) 72 require.Contains(t, err.Error(), fmt.Sprintf("'%s'", tc.constraint)) 73 } 74 }) 75 } 76 } 77 78 func TestVersionConstraintsDontClearCheckUpdates(t *testing.T) { 79 f := NewFixture(t) 80 f.File("Tiltfile", ` 81 version_settings(check_updates=False) 82 version_settings(constraint='0.x') 83 `) 84 85 m, err := f.ExecFile("Tiltfile") 86 require.NoError(t, err) 87 var settings model.VersionSettings 88 err = m.Load(&settings) 89 require.NoError(t, err) 90 require.False(t, settings.CheckUpdates) 91 } 92 93 const TestingVersion = "0.5.3" 94 95 func NewFixture(tb testing.TB) *starkit.Fixture { 96 return starkit.NewFixture(tb, NewPlugin(model.TiltBuild{Version: TestingVersion})) 97 }