github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/controllers/fake/upsert.go (about)

     1  package fake
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  	apierrors "k8s.io/apimachinery/pkg/api/errors"
    10  	"k8s.io/apimachinery/pkg/types"
    11  	ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
    12  )
    13  
    14  // Helper methods for making updates.
    15  
    16  func UpsertSpec(ctx context.Context, t testing.TB, ctrlClient ctrlclient.Client, obj ctrlclient.Object) {
    17  	t.Helper()
    18  
    19  	require.True(t, obj.GetName() != "", "object has empty name")
    20  	err := ctrlClient.Create(ctx, obj)
    21  	if ctx.Err() != nil {
    22  		return
    23  	}
    24  	if err != nil {
    25  		if apierrors.IsAlreadyExists(err) {
    26  			return
    27  		}
    28  		assert.Fail(t, "create failed", "%+v %+v", obj, err)
    29  		return
    30  	}
    31  
    32  	copy := obj.DeepCopyObject().(ctrlclient.Object)
    33  	err = ctrlClient.Get(ctx, types.NamespacedName{Name: obj.GetName()}, copy)
    34  	if ctx.Err() != nil {
    35  		return
    36  	}
    37  	assert.NoError(t, err)
    38  
    39  	obj.SetResourceVersion(copy.GetResourceVersion())
    40  
    41  	err = ctrlClient.Update(ctx, obj)
    42  	if ctx.Err() != nil {
    43  		return
    44  	}
    45  	assert.NoError(t, err)
    46  }
    47  
    48  func UpdateStatus(ctx context.Context, t testing.TB, ctrlClient ctrlclient.Client, obj ctrlclient.Object) {
    49  	copy := obj.DeepCopyObject().(ctrlclient.Object)
    50  	err := ctrlClient.Get(ctx, types.NamespacedName{Name: obj.GetName()}, copy)
    51  	if ctx.Err() != nil {
    52  		return
    53  	}
    54  	assert.NoError(t, err)
    55  
    56  	obj.SetResourceVersion(copy.GetResourceVersion())
    57  
    58  	err = ctrlClient.Status().Update(ctx, obj)
    59  	if ctx.Err() != nil {
    60  		return
    61  	}
    62  	assert.NoError(t, err)
    63  }