github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/value/label_test.go (about) 1 package value 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 "go.starlark.net/starlark" 8 ) 9 10 func TestLabelString(t *testing.T) { 11 v := LabelSet{} 12 err := v.Unpack(starlark.String("label1")) 13 require.NoError(t, err) 14 15 expected := LabelSet{Values: map[string]string{"label1": "label1"}} 16 require.Equal(t, expected, v) 17 } 18 19 func TestLabelStringList(t *testing.T) { 20 sv := starlark.NewList([]starlark.Value{starlark.String("label1"), starlark.String("label2")}) 21 v := LabelSet{} 22 err := v.Unpack(sv) 23 require.NoError(t, err) 24 25 expected := LabelSet{Values: map[string]string{"label1": "label1", "label2": "label2"}} 26 require.Equal(t, expected, v) 27 } 28 29 func TestLabelInvalidName(t *testing.T) { 30 v := LabelSet{} 31 err := v.Unpack(starlark.String("?0987wrong2345!")) 32 33 require.Error(t, err) 34 require.Contains(t, err.Error(), "Invalid label") 35 require.Contains(t, err.Error(), "alphanumeric characters") 36 } 37 38 func TestLabelInvalidType(t *testing.T) { 39 v := LabelSet{} 40 err := v.Unpack(starlark.NewDict(1)) 41 42 require.Error(t, err) 43 require.Contains(t, err.Error(), "value should be a label or List or Tuple of labels") 44 } 45 46 func TestLabelEmptyString(t *testing.T) { 47 v := LabelSet{} 48 err := v.Unpack(starlark.String("")) 49 50 require.Error(t, err) 51 require.Contains(t, err.Error(), "name part must be non-empty") 52 } 53 54 func TestLabelEmptyList(t *testing.T) { 55 sv := starlark.NewList([]starlark.Value{}) 56 v := LabelSet{} 57 err := v.Unpack(sv) 58 59 require.NoError(t, err) 60 expected := LabelSet{Values: map[string]string{}} 61 require.Equal(t, expected, v) 62 }