diff --git a/discovery/fake/discovery.go b/discovery/fake/discovery.go index c78c256e..d234db89 100644 --- a/discovery/fake/discovery.go +++ b/discovery/fake/discovery.go @@ -141,7 +141,10 @@ func (c *FakeDiscovery) ServerVersion() (*version.Info, error) { action := testing.ActionImpl{} action.Verb = "get" action.Resource = schema.GroupVersionResource{Resource: "version"} - c.Invokes(action, nil) + _, err := c.Invokes(action, nil) + if err != nil { + return nil, err + } if c.FakedServerVersion != nil { return c.FakedServerVersion, nil diff --git a/discovery/fake/discovery_test.go b/discovery/fake/discovery_test.go index cfdcf1a2..946b484f 100644 --- a/discovery/fake/discovery_test.go +++ b/discovery/fake/discovery_test.go @@ -17,11 +17,14 @@ limitations under the License. package fake_test import ( + "errors" "testing" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/version" fakediscovery "k8s.io/client-go/discovery/fake" fakeclientset "k8s.io/client-go/kubernetes/fake" + kubetesting "k8s.io/client-go/testing" ) func TestFakingServerVersion(t *testing.T) { @@ -44,3 +47,19 @@ func TestFakingServerVersion(t *testing.T) { t.Fatalf("unexpected faked discovery return value: %q", sv.GitCommit) } } + +func TestFakingServerVersionWithError(t *testing.T) { + expectedError := errors.New("an error occurred") + fakeClient := fakeclientset.NewSimpleClientset() + fakeClient.Discovery().(*fakediscovery.FakeDiscovery).PrependReactor("*", "*", func(action kubetesting.Action) (handled bool, ret runtime.Object, err error) { + return true, nil, expectedError + }) + + _, err := fakeClient.Discovery().ServerVersion() + if err == nil { + t.Fatal("ServerVersion should return error, returned nil instead") + } + if err != expectedError { + t.Fatal("ServerVersion should return expected error, returned different error instead") + } +}