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  }