Skip to content

Commit 96d4d6c

Browse files
committed
Improve the fake client builder with WithObjectTracker option
1 parent 188b486 commit 96d4d6c

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

pkg/client/fake/client.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ type ClientBuilder struct {
9292
initObject []client.Object
9393
initLists []client.ObjectList
9494
initRuntimeObjects []runtime.Object
95+
objectTracker testing.ObjectTracker
9596
}
9697

9798
// WithScheme sets this builder's internal scheme.
@@ -128,6 +129,12 @@ func (f *ClientBuilder) WithRuntimeObjects(initRuntimeObjs ...runtime.Object) *C
128129
return f
129130
}
130131

132+
// WithObjectTracker can be optionally used to initialize this fake client with testing.ObjectTracker.
133+
func (f *ClientBuilder) WithObjectTracker(ot testing.ObjectTracker) *ClientBuilder {
134+
f.objectTracker = ot
135+
return f
136+
}
137+
131138
// Build builds and returns a new fake client.
132139
func (f *ClientBuilder) Build() client.WithWatch {
133140
if f.scheme == nil {
@@ -137,7 +144,14 @@ func (f *ClientBuilder) Build() client.WithWatch {
137144
f.restMapper = meta.NewDefaultRESTMapper([]schema.GroupVersion{})
138145
}
139146

140-
tracker := versionedTracker{ObjectTracker: testing.NewObjectTracker(f.scheme, scheme.Codecs.UniversalDecoder()), scheme: f.scheme}
147+
var tracker versionedTracker
148+
149+
if f.objectTracker == nil {
150+
tracker = versionedTracker{ObjectTracker: testing.NewObjectTracker(f.scheme, scheme.Codecs.UniversalDecoder()), scheme: f.scheme}
151+
} else {
152+
tracker = versionedTracker{ObjectTracker: f.objectTracker, scheme: f.scheme}
153+
}
154+
141155
for _, obj := range f.initObject {
142156
if err := tracker.Add(obj); err != nil {
143157
panic(fmt.Errorf("failed to add object %v to fake client: %w", obj, err))

0 commit comments

Comments
 (0)