File tree Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -141,6 +141,7 @@ type ClientBuilder struct {
141141interceptorFuncs * interceptor.Funcs
142142typeConverters []managedfields.TypeConverter
143143returnManagedFields bool
144+ isBuilt bool
144145
145146// indexes maps each GroupVersionKind (GVK) to the indexes registered for that GVK.
146147// The inner map maps from index name to IndexerFunc.
@@ -267,6 +268,9 @@ func (f *ClientBuilder) WithReturnManagedFields() *ClientBuilder {
267268
268269// Build builds and returns a new fake client.
269270func (f * ClientBuilder ) Build () client.WithWatch {
271+ if f .isBuilt {
272+ panic ("Build() must not be called multiple times when creating a ClientBuilder" )
273+ }
270274if f .scheme == nil {
271275f .scheme = scheme .Scheme
272276}
@@ -344,6 +348,7 @@ func (f *ClientBuilder) Build() client.WithWatch {
344348result = interceptor .NewClient (result , * f .interceptorFuncs )
345349}
346350
351+ f .isBuilt = true
347352return result
348353}
349354
Original file line number Diff line number Diff line change @@ -3159,4 +3159,13 @@ var _ = Describe("Fake client builder", func() {
31593159Expect (err ).NotTo (HaveOccurred ())
31603160Expect (called ).To (BeTrue ())
31613161})
3162+
3163+ It ("should panic when calling build more than once" , func () {
3164+ cb := NewClientBuilder ()
3165+ anotherCb := cb
3166+ cb .Build ()
3167+ Expect (func () {
3168+ anotherCb .Build ()
3169+ }).To (Panic ())
3170+ })
31623171})
You can’t perform that action at this time.
0 commit comments