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 }