github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/cli/visitor/decode_test.go (about)

     1  package visitor_test
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  	"k8s.io/apimachinery/pkg/runtime"
    10  
    11  	"github.com/tilt-dev/tilt/internal/cli/visitor"
    12  	"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
    13  )
    14  
    15  func TestDecode(t *testing.T) {
    16  	cmds, err := decode(t, `
    17  apiVersion: tilt.dev/v1alpha1
    18  kind: Cmd
    19  metadata:
    20    name: hello-world
    21  spec:
    22    args: ["echo", "hello world"]
    23  ---
    24  apiVersion: tilt.dev/v1alpha1
    25  kind: Cmd
    26  metadata:
    27    name: goodbye-world
    28  spec:
    29    args: ["echo", "goodbye world"]
    30  `)
    31  	require.NoError(t, err)
    32  	require.Equal(t, 2, len(cmds))
    33  	assert.Equal(t, "hello-world", cmds[0].(*v1alpha1.Cmd).Name)
    34  	assert.Equal(t, "goodbye-world", cmds[1].(*v1alpha1.Cmd).Name)
    35  }
    36  
    37  func TestDecodeMisspelledField(t *testing.T) {
    38  	_, err := decode(t, `
    39  apiVersion: tilt.dev/v1alpha1
    40  kind: Cmd
    41  metadata:
    42    name: hello-world
    43  spec:
    44    misspell: ["echo", "hello world"]
    45  `)
    46  	if assert.Error(t, err) {
    47  		assert.Contains(t, err.Error(), `unknown field "misspell"`)
    48  		assert.Contains(t, err.Error(), `hello world`)
    49  	}
    50  }
    51  
    52  func decode(t *testing.T, s string) ([]runtime.Object, error) {
    53  	visitors, err := visitor.FromStrings([]string{"-"}, strings.NewReader(s))
    54  	require.NoError(t, err)
    55  	return visitor.DecodeAll(v1alpha1.NewScheme(), visitors)
    56  }