github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/controllers/core/tiltfile/reducers_test.go (about)

     1  package tiltfile
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  
    10  	"github.com/tilt-dev/tilt/internal/store"
    11  	"github.com/tilt-dev/tilt/pkg/logger"
    12  	"github.com/tilt-dev/tilt/pkg/model"
    13  )
    14  
    15  // Simulate two tiltfiles adding and removing services,
    16  // and make sure the order is reasonable.
    17  func TestManifestOrder(t *testing.T) {
    18  	ctx := logger.WithLogger(context.Background(), logger.NewTestLogger(os.Stdout))
    19  	state := store.NewState()
    20  
    21  	tfMain := model.MainTiltfileManifestName
    22  	tfExtra := model.ManifestName("tf-extra")
    23  	state.TiltfileStates[tfExtra] = &store.ManifestState{
    24  		Name:          tfExtra,
    25  		BuildStatuses: make(map[model.TargetID]*store.BuildStatus),
    26  	}
    27  
    28  	HandleConfigsReloaded(ctx, state, ConfigsReloadedAction{
    29  		Name: tfMain,
    30  		Manifests: []model.Manifest{
    31  			model.Manifest{Name: "a"},
    32  			model.Manifest{Name: "b"},
    33  			model.Manifest{Name: "c"},
    34  		},
    35  	})
    36  	assert.Equal(t,
    37  		[]model.ManifestName{"a", "b", "c"},
    38  		state.ManifestDefinitionOrder)
    39  
    40  	HandleConfigsReloaded(ctx, state, ConfigsReloadedAction{
    41  		Name: tfExtra,
    42  		Manifests: []model.Manifest{
    43  			model.Manifest{Name: "extra-x"},
    44  			model.Manifest{Name: "extra-y"},
    45  			model.Manifest{Name: "extra-z"},
    46  		},
    47  	})
    48  	assert.Equal(t,
    49  		[]model.ManifestName{"a", "b", "c", "extra-x", "extra-y", "extra-z"},
    50  		state.ManifestDefinitionOrder)
    51  
    52  	HandleConfigsReloaded(ctx, state, ConfigsReloadedAction{
    53  		Name: tfMain,
    54  		Manifests: []model.Manifest{
    55  			model.Manifest{Name: "b"},
    56  			model.Manifest{Name: "d"},
    57  		},
    58  	})
    59  	assert.Equal(t,
    60  		[]model.ManifestName{"b", "extra-x", "extra-y", "extra-z", "d"},
    61  		state.ManifestDefinitionOrder)
    62  
    63  	HandleConfigsReloaded(ctx, state, ConfigsReloadedAction{
    64  		Name: tfExtra,
    65  		Manifests: []model.Manifest{
    66  			model.Manifest{Name: "extra-x"},
    67  			model.Manifest{Name: "extra-omega"},
    68  		},
    69  	})
    70  	assert.Equal(t,
    71  		[]model.ManifestName{"b", "extra-x", "d", "extra-omega"},
    72  		state.ManifestDefinitionOrder)
    73  
    74  	HandleConfigsReloaded(ctx, state, ConfigsReloadedAction{
    75  		Name: tfMain,
    76  		Manifests: []model.Manifest{
    77  			model.Manifest{Name: "a"},
    78  			model.Manifest{Name: "b"},
    79  			model.Manifest{Name: "c"},
    80  			model.Manifest{Name: "d"},
    81  		},
    82  	})
    83  	assert.Equal(t,
    84  		[]model.ManifestName{"b", "extra-x", "d", "extra-omega", "a", "c"},
    85  		state.ManifestDefinitionOrder)
    86  }