...
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
13
14
15
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
36
37
38
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