Skip to content

Commit 307b8e1

Browse files
authored
Merge pull request #1686 from k8s-infra-cherrypick-robot/cherry-pick-1683-to-release-0.10
🌱 fake-client: extend builder with an option to set a RESTMapper
2 parents 78ce10e + 5767de5 commit 307b8e1

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

pkg/client/fake/client.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type versionedTracker struct {
5151
type fakeClient struct {
5252
tracker versionedTracker
5353
scheme *runtime.Scheme
54+
restMapper meta.RESTMapper
5455
schemeWriteLock sync.Mutex
5556
}
5657

@@ -87,6 +88,7 @@ func NewClientBuilder() *ClientBuilder {
8788
// ClientBuilder builds a fake client.
8889
type ClientBuilder struct {
8990
scheme *runtime.Scheme
91+
restMapper meta.RESTMapper
9092
initObject []client.Object
9193
initLists []client.ObjectList
9294
initRuntimeObjects []runtime.Object
@@ -99,6 +101,15 @@ func (f *ClientBuilder) WithScheme(scheme *runtime.Scheme) *ClientBuilder {
99101
return f
100102
}
101103

104+
// WithRESTMapper sets this builder's restMapper.
105+
// The restMapper is directly set as mapper in the Client. This can be used for example
106+
// with a meta.DefaultRESTMapper to provide a static rest mapping.
107+
// If not set, defaults to an empty meta.DefaultRESTMapper.
108+
func (f *ClientBuilder) WithRESTMapper(restMapper meta.RESTMapper) *ClientBuilder {
109+
f.restMapper = restMapper
110+
return f
111+
}
112+
102113
// WithObjects can be optionally used to initialize this fake client with client.Object(s).
103114
func (f *ClientBuilder) WithObjects(initObjs ...client.Object) *ClientBuilder {
104115
f.initObject = append(f.initObject, initObjs...)
@@ -122,6 +133,9 @@ func (f *ClientBuilder) Build() client.WithWatch {
122133
if f.scheme == nil {
123134
f.scheme = scheme.Scheme
124135
}
136+
if f.restMapper == nil {
137+
f.restMapper = meta.NewDefaultRESTMapper([]schema.GroupVersion{})
138+
}
125139

126140
tracker := versionedTracker{ObjectTracker: testing.NewObjectTracker(f.scheme, scheme.Codecs.UniversalDecoder()), scheme: f.scheme}
127141
for _, obj := range f.initObject {
@@ -140,8 +154,9 @@ func (f *ClientBuilder) Build() client.WithWatch {
140154
}
141155
}
142156
return &fakeClient{
143-
tracker: tracker,
144-
scheme: f.scheme,
157+
tracker: tracker,
158+
scheme: f.scheme,
159+
restMapper: f.restMapper,
145160
}
146161
}
147162

@@ -417,8 +432,7 @@ func (c *fakeClient) Scheme() *runtime.Scheme {
417432
}
418433

419434
func (c *fakeClient) RESTMapper() meta.RESTMapper {
420-
// TODO: Implement a fake RESTMapper.
421-
return nil
435+
return c.restMapper
422436
}
423437

424438
func (c *fakeClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error {

0 commit comments

Comments
 (0)