github.com/tilt-dev/tilt@v0.36.0/internal/k8s/locator_test.go (about) 1 package k8s 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 v1 "k8s.io/api/core/v1" 9 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" 10 11 "github.com/tilt-dev/tilt/internal/container" 12 "github.com/tilt-dev/tilt/internal/k8s/testyaml" 13 ) 14 15 func TestCRDImageObjectInjection(t *testing.T) { 16 entities, err := ParseYAMLFromString(testyaml.CRDImageObjectYAML) 17 require.NoError(t, err) 18 19 e := entities[0] 20 selector := MustKindSelector("UselessMachine") 21 locator := MustJSONPathImageObjectLocator(selector, "{.spec.imageObject}", "repo", "tag") 22 images, err := locator.Extract(e) 23 require.NoError(t, err) 24 require.Equal(t, 1, len(images)) 25 assert.Equal(t, "docker.io/library/frontend", images[0].String()) 26 27 e, modified, err := locator.Inject(e, container.MustParseSelector("frontend"), 28 container.MustParseNamed("frontend:tilt-123"), v1.PullNever) 29 require.NoError(t, err) 30 assert.True(t, modified) 31 32 images, err = locator.Extract(e) 33 require.NoError(t, err) 34 require.Equal(t, 1, len(images)) 35 assert.Equal(t, "docker.io/library/frontend:tilt-123", images[0].String()) 36 } 37 38 func TestCRDPullPolicyInjection(t *testing.T) { 39 entities, err := ParseYAMLFromString(testyaml.CRDContainerSpecYAML) 40 require.NoError(t, err) 41 42 e := entities[0] 43 selector := MustKindSelector("UselessMachine") 44 locator := MustJSONPathImageLocator(selector, "{.spec.containers[*].image}") 45 images, err := locator.Extract(e) 46 require.NoError(t, err) 47 require.Equal(t, 1, len(images)) 48 assert.Equal(t, "docker.io/library/frontend", images[0].String()) 49 50 e, modified, err := locator.Inject(e, container.MustParseSelector("frontend"), 51 container.MustParseNamed("frontend:tilt-123"), v1.PullNever) 52 require.NoError(t, err) 53 require.True(t, modified) 54 55 spec := e.Obj.(*unstructured.Unstructured).Object["spec"].(map[string]interface{}) 56 c := spec["containers"].([]interface{})[0].(map[string]interface{}) 57 require.Equal(t, "frontend:tilt-123", c["image"]) 58 require.Equal(t, "Never", c["imagePullPolicy"].(string)) 59 }