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  }