github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/value/map_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 TestStringStringMap(t *testing.T) { 11 sv := starlark.NewDict(2) 12 err := sv.SetKey(starlark.String("a"), starlark.String("b")) 13 require.NoError(t, err) 14 err = sv.SetKey(starlark.String("c"), starlark.String("d")) 15 require.NoError(t, err) 16 17 v := StringStringMap{} 18 19 err = v.Unpack(sv) 20 require.NoError(t, err) 21 22 expected := StringStringMap{"a": "b", "c": "d"} 23 require.Equal(t, expected, v) 24 } 25 26 func TestStringStringMapNotDict(t *testing.T) { 27 sv := starlark.NewList([]starlark.Value{starlark.String("a"), starlark.String("b")}) 28 29 v := StringStringMap{} 30 31 err := v.Unpack(sv) 32 require.Error(t, err) 33 require.Contains(t, err.Error(), "expected dict, got *starlark.List") 34 } 35 36 func TestStringStringMapKeyNotString(t *testing.T) { 37 sv := starlark.NewDict(1) 38 err := sv.SetKey(starlark.MakeInt(1), starlark.String("a")) 39 require.NoError(t, err) 40 41 v := StringStringMap{} 42 43 err = v.Unpack(sv) 44 require.Error(t, err) 45 require.Contains(t, err.Error(), "key is not a string: starlark.Int (1)") 46 } 47 48 func TestStringStringMapValueNotString(t *testing.T) { 49 sv := starlark.NewDict(1) 50 err := sv.SetKey(starlark.String("a"), starlark.MakeInt(1)) 51 require.NoError(t, err) 52 53 v := StringStringMap{} 54 55 err = v.Unpack(sv) 56 require.Error(t, err) 57 require.Contains(t, err.Error(), "value is not a string: starlark.Int (1)") 58 } 59 60 func TestStringStringMapUnpackClearsExistingData(t *testing.T) { 61 sv := starlark.NewDict(2) 62 err := sv.SetKey(starlark.String("a"), starlark.String("b")) 63 require.NoError(t, err) 64 err = sv.SetKey(starlark.String("c"), starlark.String("d")) 65 require.NoError(t, err) 66 67 v := StringStringMap{} 68 69 err = v.Unpack(sv) 70 require.NoError(t, err) 71 72 sv = starlark.NewDict(0) 73 err = v.Unpack(sv) 74 require.NoError(t, err) 75 require.Equal(t, 0, len(v)) 76 }