github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/pkg/model/target_graph_test.go (about) 1 package model 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestOneImageGraph(t *testing.T) { 12 iTarget := newDepTarget("image-a") 13 kTarget := newK8sTarget("fe", "image-a") 14 g, err := NewTargetGraph([]TargetSpec{ 15 iTarget, 16 kTarget, 17 }) 18 assert.NoError(t, err) 19 assert.True(t, g.IsSingleSourceDAG()) 20 assert.Equal(t, 1, len(g.DeployedImages())) 21 22 ids := []TargetID{} 23 err = g.VisitTree(kTarget, func(t TargetSpec) error { 24 ids = append(ids, t.ID()) 25 return nil 26 }) 27 require.NoError(t, err) 28 assert.Equal(t, []TargetID{iTarget.ID(), kTarget.ID()}, ids) 29 } 30 31 func TestTwoImageGraph(t *testing.T) { 32 targetA := newDepTarget("image-a") 33 targetB := newDepTarget("image-b") 34 kTarget := newK8sTarget("fe", "image-a", "image-b") 35 g, err := NewTargetGraph([]TargetSpec{ 36 targetA, 37 targetB, 38 kTarget, 39 }) 40 assert.NoError(t, err) 41 assert.True(t, g.IsSingleSourceDAG()) 42 assert.Equal(t, 2, len(g.DeployedImages())) 43 44 ids := []TargetID{} 45 err = g.VisitTree(kTarget, func(t TargetSpec) error { 46 ids = append(ids, t.ID()) 47 return nil 48 }) 49 require.NoError(t, err) 50 assert.Equal(t, []TargetID{targetA.ID(), targetB.ID(), kTarget.ID()}, ids) 51 } 52 53 func TestDependentImageGraph(t *testing.T) { 54 targetA := newDepTarget("image-a") 55 targetB := newDepTarget("image-b", "image-a") 56 kTarget := newK8sTarget("fe", "image-b") 57 g, err := NewTargetGraph([]TargetSpec{ 58 targetA, 59 targetB, 60 kTarget, 61 }) 62 assert.NoError(t, err) 63 assert.True(t, g.IsSingleSourceDAG()) 64 assert.Equal(t, 1, len(g.DeployedImages())) 65 66 ids := []TargetID{} 67 err = g.VisitTree(kTarget, func(t TargetSpec) error { 68 ids = append(ids, t.ID()) 69 return nil 70 }) 71 require.NoError(t, err) 72 assert.Equal(t, []TargetID{targetA.ID(), targetB.ID(), kTarget.ID()}, ids) 73 } 74 75 func TestDiamondImageGraph(t *testing.T) { 76 targetA := newDepTarget("image-a") 77 targetB := newDepTarget("image-b", "image-a") 78 targetC := newDepTarget("image-c", "image-a") 79 targetD := newDepTarget("image-d", "image-b", "image-c") 80 kTarget := newK8sTarget("fe", "image-d") 81 g, err := NewTargetGraph([]TargetSpec{ 82 targetA, 83 targetB, 84 targetC, 85 targetD, 86 kTarget, 87 }) 88 assert.NoError(t, err) 89 assert.True(t, g.IsSingleSourceDAG()) 90 assert.Equal(t, 1, len(g.DeployedImages())) 91 92 ids := []TargetID{} 93 err = g.VisitTree(kTarget, func(t TargetSpec) error { 94 ids = append(ids, t.ID()) 95 return nil 96 }) 97 require.NoError(t, err) 98 assert.Equal(t, []TargetID{targetA.ID(), targetB.ID(), targetC.ID(), targetD.ID(), kTarget.ID()}, ids) 99 } 100 101 func TestTwoDeployGraph(t *testing.T) { 102 kTargetA := newK8sTarget("fe-a") 103 kTargetB := newK8sTarget("fe-b") 104 g, err := NewTargetGraph([]TargetSpec{ 105 kTargetA, 106 kTargetB, 107 }) 108 assert.NoError(t, err) 109 assert.False(t, g.IsSingleSourceDAG()) 110 assert.Equal(t, 0, len(g.DeployedImages())) 111 }