...

Source file src/edge-infra.dev/pkg/k8s/testing/kmp/inventory.go

Documentation: edge-infra.dev/pkg/k8s/testing/kmp

     1  package kmp
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"gotest.tools/v3/assert/cmp"
     7  	"sigs.k8s.io/controller-runtime/pkg/client"
     8  
     9  	"edge-infra.dev/pkg/k8s/runtime/inventory"
    10  )
    11  
    12  // SameInventory checks that the exp and actual inventories contain the same
    13  // objects.
    14  //
    15  // The compared object must implement [edge-infra.dev/pkg/k8s/runtime/inventory.Getter]
    16  func SameInventory(exp, actual *inventory.ResourceInventory) cmp.Comparison {
    17  	return func() cmp.Result {
    18  		if exp == nil || actual == nil {
    19  			return cmp.ResultFailure("can't compare nil inventories")
    20  		}
    21  		diff, err := inventory.Diff(exp, actual)
    22  		if err != nil {
    23  			return cmp.ResultFromError(err)
    24  		}
    25  		if len(diff) > 0 {
    26  			return cmp.ResultFailure(fmt.Sprintf(
    27  				"unexpected inventory:\n\n\tgot: %s\n\n\texpected: %s\n",
    28  				actual, exp,
    29  			))
    30  		}
    31  		return cmp.ResultSuccess
    32  	}
    33  }
    34  
    35  // HasInventory checks that the object o has the same contents as the expected
    36  // inventory.
    37  //
    38  // The compared object must implement [edge-infra.dev/pkg/k8s/runtime/inventory.Getter]
    39  func HasInventory(exp *inventory.ResourceInventory) Komparison {
    40  	return func(o client.Object) cmp.Result {
    41  		return SameInventory(exp, o.(inventory.Getter).GetInventory())()
    42  	}
    43  }
    44  

View as plain text