Skip to content

Commit

Permalink
Move TestResource into an internal package (#174)
Browse files Browse the repository at this point in the history
These are fake k8s resources used for testing reconciler-runtime and not
part of reconciler-runtime's test support.

Signed-off-by: Scott Andrews <andrewssc@vmware.com>
  • Loading branch information
scothis committed Dec 23, 2021
1 parent 45da275 commit 8c74a21
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 85 deletions.
19 changes: 19 additions & 0 deletions internal/resources/factories/aliases.go
@@ -0,0 +1,19 @@
/*
Copyright 2019 VMware, Inc.
SPDX-License-Identifier: Apache-2.0
*/

package factories

import (
"github.com/vmware-labs/reconciler-runtime/testing/factories"
)

type ConditionFactory = factories.ConditionFactory
type ObjectMeta = factories.ObjectMeta
type PodTemplateSpec = factories.PodTemplateSpec

var Condition = factories.Condition
var ObjectMetaFactory = factories.ObjectMetaFactory
var PodTemplateSpecFactory = factories.PodTemplateSpecFactory
var ConfigMap = factories.ConfigMap
Expand Up @@ -8,16 +8,18 @@ package factories
import (
"fmt"

"github.com/vmware-labs/reconciler-runtime/internal/resources"
rtesting "github.com/vmware-labs/reconciler-runtime/testing"
"github.com/vmware-labs/reconciler-runtime/testing/factories"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"sigs.k8s.io/controller-runtime/pkg/client"
)

type testresource struct {
NullObjectMeta
target *rtesting.TestResource
factories.NullObjectMeta
target *resources.TestResource
}

var (
Expand All @@ -26,11 +28,11 @@ var (
)

// Deprecated
func TestResource(seed ...*rtesting.TestResource) *testresource {
var target *rtesting.TestResource
func TestResource(seed ...*resources.TestResource) *testresource {
var target *resources.TestResource
switch len(seed) {
case 0:
target = &rtesting.TestResource{}
target = &resources.TestResource{}
case 1:
target = seed[0]
default:
Expand All @@ -53,61 +55,61 @@ func (f *testresource) deepCopy() *testresource {
return TestResource(f.target.DeepCopy())
}

func (f *testresource) Create() *rtesting.TestResource {
func (f *testresource) Create() *resources.TestResource {
return f.deepCopy().target
}

func (f *testresource) CreateObject() client.Object {
return f.Create()
}

func (f *testresource) mutation(m func(*rtesting.TestResource)) *testresource {
func (f *testresource) mutation(m func(*resources.TestResource)) *testresource {
f = f.deepCopy()
m(f.target)
return f
}

func (f *testresource) NamespaceName(namespace, name string) *testresource {
return f.mutation(func(sa *rtesting.TestResource) {
return f.mutation(func(sa *resources.TestResource) {
sa.ObjectMeta.Namespace = namespace
sa.ObjectMeta.Name = name
})
}

func (f *testresource) ObjectMeta(nf func(ObjectMeta)) *testresource {
return f.mutation(func(sa *rtesting.TestResource) {
omf := ObjectMetaFactory(sa.ObjectMeta)
func (f *testresource) ObjectMeta(nf func(factories.ObjectMeta)) *testresource {
return f.mutation(func(sa *resources.TestResource) {
omf := factories.ObjectMetaFactory(sa.ObjectMeta)
nf(omf)
sa.ObjectMeta = omf.Create()
})
}

func (f *testresource) AddField(key string, value string) *testresource {
return f.mutation(func(r *rtesting.TestResource) {
return f.mutation(func(r *resources.TestResource) {
if r.Spec.Fields == nil {
r.Spec.Fields = map[string]string{}
}
r.Spec.Fields[key] = value
})
}

func (f *testresource) PodTemplateSpec(nf func(PodTemplateSpec)) *testresource {
return f.mutation(func(r *rtesting.TestResource) {
ptsf := PodTemplateSpecFactory(r.Spec.Template)
func (f *testresource) PodTemplateSpec(nf func(factories.PodTemplateSpec)) *testresource {
return f.mutation(func(r *resources.TestResource) {
ptsf := factories.PodTemplateSpecFactory(r.Spec.Template)
nf(ptsf)
r.Spec.Template = ptsf.Create()
})
}

func (f *testresource) ErrorOn(marshal, unmarshal bool) *testresource {
return f.mutation(func(r *rtesting.TestResource) {
return f.mutation(func(r *resources.TestResource) {
r.Spec.ErrOnMarshal = marshal
r.Spec.ErrOnUnmarshal = unmarshal
})
}

func (f *testresource) StatusConditions(conditions ...ConditionFactory) *testresource {
return f.mutation(func(testresource *rtesting.TestResource) {
func (f *testresource) StatusConditions(conditions ...factories.ConditionFactory) *testresource {
return f.mutation(func(testresource *resources.TestResource) {
c := make([]metav1.Condition, len(conditions))
for i, cg := range conditions {
c[i] = cg.Create()
Expand All @@ -117,7 +119,7 @@ func (f *testresource) StatusConditions(conditions ...ConditionFactory) *testres
}

func (f *testresource) AddStatusField(key string, value string) *testresource {
return f.mutation(func(r *rtesting.TestResource) {
return f.mutation(func(r *resources.TestResource) {
if r.Status.Fields == nil {
r.Status.Fields = map[string]string{}
}
Expand Down
Expand Up @@ -8,15 +8,17 @@ package factories
import (
"fmt"

"github.com/vmware-labs/reconciler-runtime/internal/resources"
rtesting "github.com/vmware-labs/reconciler-runtime/testing"
"github.com/vmware-labs/reconciler-runtime/testing/factories"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"sigs.k8s.io/controller-runtime/pkg/client"
)

type testresourcenostatus struct {
NullObjectMeta
target *rtesting.TestResourceNoStatus
factories.NullObjectMeta
target *resources.TestResourceNoStatus
}

var (
Expand All @@ -25,11 +27,11 @@ var (
)

// Deprecated
func TestResourceNoStatus(seed ...*rtesting.TestResourceNoStatus) *testresourcenostatus {
var target *rtesting.TestResourceNoStatus
func TestResourceNoStatus(seed ...*resources.TestResourceNoStatus) *testresourcenostatus {
var target *resources.TestResourceNoStatus
switch len(seed) {
case 0:
target = &rtesting.TestResourceNoStatus{}
target = &resources.TestResourceNoStatus{}
case 1:
target = seed[0]
default:
Expand All @@ -52,30 +54,30 @@ func (f *testresourcenostatus) deepCopy() *testresourcenostatus {
return TestResourceNoStatus(f.target.DeepCopy())
}

func (f *testresourcenostatus) Create() *rtesting.TestResourceNoStatus {
func (f *testresourcenostatus) Create() *resources.TestResourceNoStatus {
return f.deepCopy().target
}

func (f *testresourcenostatus) CreateObject() client.Object {
return f.Create()
}

func (f *testresourcenostatus) mutation(m func(*rtesting.TestResourceNoStatus)) *testresourcenostatus {
func (f *testresourcenostatus) mutation(m func(*resources.TestResourceNoStatus)) *testresourcenostatus {
f = f.deepCopy()
m(f.target)
return f
}

func (f *testresourcenostatus) NamespaceName(namespace, name string) *testresourcenostatus {
return f.mutation(func(sa *rtesting.TestResourceNoStatus) {
return f.mutation(func(sa *resources.TestResourceNoStatus) {
sa.ObjectMeta.Namespace = namespace
sa.ObjectMeta.Name = name
})
}

func (f *testresourcenostatus) ObjectMeta(nf func(ObjectMeta)) *testresourcenostatus {
return f.mutation(func(sa *rtesting.TestResourceNoStatus) {
omf := ObjectMetaFactory(sa.ObjectMeta)
func (f *testresourcenostatus) ObjectMeta(nf func(factories.ObjectMeta)) *testresourcenostatus {
return f.mutation(func(sa *resources.TestResourceNoStatus) {
omf := factories.ObjectMetaFactory(sa.ObjectMeta)
nf(omf)
sa.ObjectMeta = omf.Create()
})
Expand Down
2 changes: 1 addition & 1 deletion testing/resource.go → internal/resources/resource.go
Expand Up @@ -3,7 +3,7 @@ Copyright 2019 VMware, Inc.
SPDX-License-Identifier: Apache-2.0
*/

package testing
package resources

import (
"encoding/json"
Expand Down
Expand Up @@ -3,7 +3,7 @@ Copyright 2021 VMware, Inc.
SPDX-License-Identifier: Apache-2.0
*/

package testing
package resources

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 8c74a21

Please sign in to comment.