diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 622d7e8a..502b1cd6 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -372,103 +372,103 @@ }, { "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/apps/v1beta2", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/autoscaling/v2alpha1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/batch/v1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/batch/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/core/v1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/imagepolicy/v1alpha1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/networking/v1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/rbac/v1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/scheduling/v1alpha1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/storage/v1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "039ab3abf602964ac5fc9b4669fd8e7ec58fbbd8" + "Rev": "21998e7d64f3b177d533268cfb312523e1d53038" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/equality", diff --git a/discovery/fake/BUILD b/discovery/fake/BUILD index ac28a224..f4ef7d21 100644 --- a/discovery/fake/BUILD +++ b/discovery/fake/BUILD @@ -30,6 +30,9 @@ filegroup( filegroup( name = "all-srcs", - srcs = [":package-srcs"], + srcs = [ + ":package-srcs", + "//staging/src/k8s.io/client-go/discovery/fake/test:all-srcs", + ], tags = ["automanaged"], ) diff --git a/discovery/fake/discovery.go b/discovery/fake/discovery.go index 02e77cfe..0b757ad4 100644 --- a/discovery/fake/discovery.go +++ b/discovery/fake/discovery.go @@ -31,8 +31,11 @@ import ( "k8s.io/client-go/testing" ) +// FakeDiscovery implements discovery.DiscoveryInterface and sometimes calls testing.Fake.Invoke with an action, +// but doesn't respect the return value if any. There is a way to fake static values like ServerVersion by using the Faked... fields on the struct. type FakeDiscovery struct { *testing.Fake + FakedServerVersion *version.Info } func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error) { @@ -74,8 +77,12 @@ func (c *FakeDiscovery) ServerVersion() (*version.Info, error) { action := testing.ActionImpl{} action.Verb = "get" action.Resource = schema.GroupVersionResource{Resource: "version"} - c.Invokes(action, nil) + + if c.FakedServerVersion != nil { + return c.FakedServerVersion, nil + } + versionInfo := kubeversion.Get() return &versionInfo, nil } diff --git a/discovery/fake/test/BUILD b/discovery/fake/test/BUILD new file mode 100644 index 00000000..eb19f919 --- /dev/null +++ b/discovery/fake/test/BUILD @@ -0,0 +1,25 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_test") + +go_test( + name = "go_default_test", + srcs = ["discovery_test.go"], + deps = [ + "//vendor/k8s.io/apimachinery/pkg/version:go_default_library", + "//vendor/k8s.io/client-go/discovery/fake:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/discovery/fake/test/discovery_test.go b/discovery/fake/test/discovery_test.go new file mode 100644 index 00000000..816f6a74 --- /dev/null +++ b/discovery/fake/test/discovery_test.go @@ -0,0 +1,46 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package fake + +import ( + "testing" + + "k8s.io/apimachinery/pkg/version" + fakediscovery "k8s.io/client-go/discovery/fake" + fakeclientset "k8s.io/client-go/kubernetes/fake" +) + +func TestFakingServerVersion(t *testing.T) { + client := fakeclientset.NewSimpleClientset() + fakeDiscovery, ok := client.Discovery().(*fakediscovery.FakeDiscovery) + if !ok { + t.Fatalf("couldn't convert Discovery() to *FakeDiscovery") + } + + testGitCommit := "v1.0.0" + fakeDiscovery.FakedServerVersion = &version.Info{ + GitCommit: testGitCommit, + } + + sv, err := client.Discovery().ServerVersion() + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if sv.GitCommit != testGitCommit { + t.Fatalf("unexpected faked discovery return value: %q", sv.GitCommit) + } +} diff --git a/kubernetes/fake/clientset_generated.go b/kubernetes/fake/clientset_generated.go index 5569e92b..22937cce 100644 --- a/kubernetes/fake/clientset_generated.go +++ b/kubernetes/fake/clientset_generated.go @@ -87,10 +87,9 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { fakePtr := testing.Fake{} fakePtr.AddReactor("*", "*", testing.ObjectReaction(o)) - fakePtr.AddWatchReactor("*", testing.DefaultWatchReactor(watch.NewFake(), nil)) - return &Clientset{fakePtr} + return &Clientset{fakePtr, &fakediscovery.FakeDiscovery{Fake: &fakePtr}} } // Clientset implements clientset.Interface. Meant to be embedded into a @@ -98,10 +97,11 @@ func NewSimpleClientset(objects ...runtime.Object) *Clientset { // you want to test easier. type Clientset struct { testing.Fake + discovery *fakediscovery.FakeDiscovery } func (c *Clientset) Discovery() discovery.DiscoveryInterface { - return &fakediscovery.FakeDiscovery{Fake: &c.Fake} + return c.discovery } var _ clientset.Interface = &Clientset{}