Skip to content

Commit

Permalink
polishing
Browse files Browse the repository at this point in the history
Signed-off-by: Scott Andrews <andrewssc@vmware.com>
  • Loading branch information
scothis committed Apr 5, 2023
1 parent eaa26f9 commit b977dd1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 13 deletions.
23 changes: 15 additions & 8 deletions internal/util.go
Expand Up @@ -7,23 +7,30 @@ package internal

import "reflect"

// IsNil returns true if the value is nilable and nil
// IsNil returns true if the value is nil, false if the value is not nilable or not nil
func IsNil(val interface{}) bool {
// return val == nil
if !IsNilable(val) {
return false
}
return reflect.ValueOf(val).IsNil()
}

// IsNilable returns true if the value can be nil
func IsNilable(val interface{}) bool {
v := reflect.ValueOf(val)
switch v.Kind() {
case reflect.Chan:
return v.IsNil()
return true
case reflect.Func:
return v.IsNil()
return true
case reflect.Interface:
return v.IsNil()
return true
case reflect.Map:
return v.IsNil()
return true
case reflect.Ptr:
return v.IsNil()
return true
case reflect.Slice:
return v.IsNil()
return true
default:
return false
}
Expand Down
10 changes: 5 additions & 5 deletions testing/subreconciler.go
Expand Up @@ -202,8 +202,8 @@ func (tc *SubReconcilerTestCase[T]) Run(t *testing.T, scheme *runtime.Scheme, fa
ctx = reconcilers.StashRequest(ctx, reconcilers.Request{
NamespacedName: types.NamespacedName{Namespace: resource.GetNamespace(), Name: resource.GetName()},
})
ctx = reconcilers.StashOriginalResourceType(ctx, resource.DeepCopyObject().(client.Object))
ctx = reconcilers.StashResourceType(ctx, resource.DeepCopyObject().(client.Object))
ctx = reconcilers.StashOriginalResourceType(ctx, resource.DeepCopyObject().(T))
ctx = reconcilers.StashResourceType(ctx, resource.DeepCopyObject().(T))

configs := make(map[string]reconcilers.Config, len(tc.AdditionalConfigs))
for k, v := range tc.AdditionalConfigs {
Expand Down Expand Up @@ -240,9 +240,9 @@ func (tc *SubReconcilerTestCase[T]) Run(t *testing.T, scheme *runtime.Scheme, fa
}

// compare resource
expectedResource := tc.Resource.DeepCopyObject().(client.Object)
if !internal.IsNil(tc.ExpectResource) {
expectedResource = tc.ExpectResource.DeepCopyObject().(client.Object)
expectedResource := tc.Resource.DeepCopyObject().(T)
if internal.IsNilable(tc.ExpectResource) && !internal.IsNil(tc.ExpectResource) {
expectedResource = tc.ExpectResource.DeepCopyObject().(T)
}
if expectedResource.GetResourceVersion() == "" {
// mirror defaulting of the resource
Expand Down

0 comments on commit b977dd1

Please sign in to comment.