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  }