@@ -92,6 +92,7 @@ type ClientBuilder struct {
92
92
initObject []client.Object
93
93
initLists []client.ObjectList
94
94
initRuntimeObjects []runtime.Object
95
+ objectTracker testing.ObjectTracker
95
96
}
96
97
97
98
// WithScheme sets this builder's internal scheme.
@@ -128,6 +129,12 @@ func (f *ClientBuilder) WithRuntimeObjects(initRuntimeObjs ...runtime.Object) *C
128
129
return f
129
130
}
130
131
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
+
131
138
// Build builds and returns a new fake client.
132
139
func (f * ClientBuilder ) Build () client.WithWatch {
133
140
if f .scheme == nil {
@@ -137,7 +144,14 @@ func (f *ClientBuilder) Build() client.WithWatch {
137
144
f .restMapper = meta .NewDefaultRESTMapper ([]schema.GroupVersion {})
138
145
}
139
146
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
+
141
155
for _ , obj := range f .initObject {
142
156
if err := tracker .Add (obj ); err != nil {
143
157
panic (fmt .Errorf ("failed to add object %v to fake client: %w" , obj , err ))
0 commit comments