diff --git a/Gopkg.lock b/Gopkg.lock index eca869f09..d6c7f7945 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -21,10 +21,7 @@ [[projects]] name = "github.com/gogo/protobuf" - packages = [ - "proto", - "sortkeys" - ] + packages = ["proto","sortkeys"] revision = "1adfc126b41513cc696b209667c8656ea7aac67c" version = "v1.0.0" @@ -36,13 +33,7 @@ [[projects]] name = "github.com/golang/protobuf" - packages = [ - "proto", - "ptypes", - "ptypes/any", - "ptypes/duration", - "ptypes/timestamp" - ] + packages = ["proto","ptypes","ptypes/any","ptypes/duration","ptypes/timestamp"] revision = "b4deda0973fb4c70b50d226b1af49f3da59f5265" version = "v1.1.0" @@ -54,11 +45,7 @@ [[projects]] name = "github.com/googleapis/gnostic" - packages = [ - "OpenAPIv2", - "compiler", - "extensions" - ] + packages = ["OpenAPIv2","compiler","extensions"] revision = "ee43cbb60db7bd22502942cccbc39059117352ab" version = "v0.1.0" @@ -107,32 +94,12 @@ [[projects]] branch = "master" name = "golang.org/x/net" - packages = [ - "http/httpguts", - "http2", - "http2/hpack", - "idna" - ] + packages = ["http/httpguts","http2","http2/hpack","idna"] revision = "2491c5de3490fced2f6cff376127c667efeed857" [[projects]] name = "golang.org/x/text" - packages = [ - "collate", - "collate/build", - "internal/colltab", - "internal/gen", - "internal/tag", - "internal/triegen", - "internal/ucd", - "language", - "secure/bidirule", - "transform", - "unicode/bidi", - "unicode/cldr", - "unicode/norm", - "unicode/rangetable" - ] + packages = ["collate","collate/build","internal/colltab","internal/gen","internal/tag","internal/triegen","internal/ucd","language","secure/bidirule","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable"] revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" version = "v0.3.0" @@ -151,75 +118,13 @@ [[projects]] branch = "master" name = "k8s.io/api" - packages = [ - "admissionregistration/v1alpha1", - "admissionregistration/v1beta1", - "apps/v1", - "apps/v1beta1", - "apps/v1beta2", - "authentication/v1", - "authentication/v1beta1", - "authorization/v1", - "authorization/v1beta1", - "autoscaling/v1", - "autoscaling/v2beta1", - "batch/v1", - "batch/v1beta1", - "batch/v2alpha1", - "certificates/v1beta1", - "core/v1", - "events/v1beta1", - "extensions/v1beta1", - "networking/v1", - "policy/v1beta1", - "rbac/v1", - "rbac/v1alpha1", - "rbac/v1beta1", - "scheduling/v1alpha1", - "settings/v1alpha1", - "storage/v1", - "storage/v1alpha1", - "storage/v1beta1" - ] + packages = ["admissionregistration/v1alpha1","admissionregistration/v1beta1","apps/v1","apps/v1beta1","apps/v1beta2","authentication/v1","authentication/v1beta1","authorization/v1","authorization/v1beta1","autoscaling/v1","autoscaling/v2beta1","batch/v1","batch/v1beta1","batch/v2alpha1","certificates/v1beta1","core/v1","events/v1beta1","extensions/v1beta1","networking/v1","policy/v1beta1","rbac/v1","rbac/v1alpha1","rbac/v1beta1","scheduling/v1alpha1","settings/v1alpha1","storage/v1","storage/v1alpha1","storage/v1beta1"] revision = "53d615ae3f440f957cb9989d989d597f047262d9" [[projects]] branch = "master" name = "k8s.io/apimachinery" - packages = [ - "pkg/api/resource", - "pkg/apis/meta/v1", - "pkg/apis/meta/v1/unstructured", - "pkg/conversion", - "pkg/conversion/queryparams", - "pkg/fields", - "pkg/labels", - "pkg/runtime", - "pkg/runtime/schema", - "pkg/runtime/serializer", - "pkg/runtime/serializer/json", - "pkg/runtime/serializer/protobuf", - "pkg/runtime/serializer/recognizer", - "pkg/runtime/serializer/versioning", - "pkg/selection", - "pkg/types", - "pkg/util/errors", - "pkg/util/framer", - "pkg/util/intstr", - "pkg/util/json", - "pkg/util/mergepatch", - "pkg/util/net", - "pkg/util/runtime", - "pkg/util/sets", - "pkg/util/strategicpatch", - "pkg/util/validation", - "pkg/util/validation/field", - "pkg/util/wait", - "pkg/util/yaml", - "pkg/watch", - "third_party/forked/golang/json", - "third_party/forked/golang/reflect" - ] + packages = ["pkg/api/resource","pkg/apis/meta/v1","pkg/apis/meta/v1/unstructured","pkg/conversion","pkg/conversion/queryparams","pkg/fields","pkg/labels","pkg/runtime","pkg/runtime/schema","pkg/runtime/serializer","pkg/runtime/serializer/json","pkg/runtime/serializer/protobuf","pkg/runtime/serializer/recognizer","pkg/runtime/serializer/versioning","pkg/selection","pkg/types","pkg/util/errors","pkg/util/framer","pkg/util/intstr","pkg/util/json","pkg/util/mergepatch","pkg/util/net","pkg/util/runtime","pkg/util/sets","pkg/util/strategicpatch","pkg/util/validation","pkg/util/validation/field","pkg/util/wait","pkg/util/yaml","pkg/watch","third_party/forked/golang/json","third_party/forked/golang/reflect"] revision = "13b73596e4b63e03203e86f6d9c7bcc1b937c62f" [[projects]] @@ -234,15 +139,9 @@ packages = ["pkg/util/proto"] revision = "b3f03f55328800731ce03a164b80973014ecd455" -[[projects]] - branch = "master" - name = "k8s.io/utils" - packages = ["exec"] - revision = "258e2a2fa64568210fbd6267cf1d8fd87c3cb86e" - [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "e966d7880a29cf5669060d6564407f0f4c164e93eb844c22efec383383af2d3e" + inputs-digest = "5db04f15b28ff308d120d51636186eeac91a4d8b984f884385b1a6bf66e1f22a" solver-name = "gps-cdcl" solver-version = 1 diff --git a/pkg/diff/program.go b/pkg/diff/program.go index c6bd279e1..8fb35571b 100644 --- a/pkg/diff/program.go +++ b/pkg/diff/program.go @@ -20,7 +20,7 @@ import ( "io" "os" - "k8s.io/utils/exec" + "github.com/kubernetes-sigs/kustomize/pkg/exec" ) // program wraps the system diff program. diff --git a/vendor/k8s.io/utils/exec/doc.go b/pkg/exec/doc.go similarity index 76% rename from vendor/k8s.io/utils/exec/doc.go rename to pkg/exec/doc.go index cbb44bdb5..391b5d4ec 100644 --- a/vendor/k8s.io/utils/exec/doc.go +++ b/pkg/exec/doc.go @@ -15,4 +15,7 @@ limitations under the License. */ // Package exec provides an injectable interface and implementations for running commands. -package exec // import "k8s.io/utils/exec" +// TODO: delete this package, use k8s.io/utils/exec instead. +// That package was copied here as a temporary workaround to make progress on b/80488884 +// (avoid the need to import exec first). +package exec diff --git a/vendor/k8s.io/utils/exec/exec.go b/pkg/exec/exec.go similarity index 99% rename from vendor/k8s.io/utils/exec/exec.go rename to pkg/exec/exec.go index 07735d881..9cc58d930 100644 --- a/vendor/k8s.io/utils/exec/exec.go +++ b/pkg/exec/exec.go @@ -206,10 +206,12 @@ func (e CodeExitError) String() string { return e.Err.Error() } +// Exited returns true. func (e CodeExitError) Exited() bool { return true } +// ExitStatus delegates to Code. func (e CodeExitError) ExitStatus() int { return e.Code } diff --git a/vendor/k8s.io/utils/exec/exec_test.go b/pkg/exec/exec_test.go similarity index 100% rename from vendor/k8s.io/utils/exec/exec_test.go rename to pkg/exec/exec_test.go diff --git a/vendor/k8s.io/utils/exec/new_test.go b/pkg/exec/new_test.go similarity index 94% rename from vendor/k8s.io/utils/exec/new_test.go rename to pkg/exec/new_test.go index dba9bb350..aad3922d0 100644 --- a/vendor/k8s.io/utils/exec/new_test.go +++ b/pkg/exec/new_test.go @@ -20,7 +20,7 @@ import ( "bytes" "fmt" - "k8s.io/utils/exec" + "github.com/kubernetes-sigs/kustomize/pkg/exec" ) func ExampleNew() { diff --git a/vendor/k8s.io/utils/.travis.yml b/vendor/k8s.io/utils/.travis.yml deleted file mode 100644 index d39066ccf..000000000 --- a/vendor/k8s.io/utils/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go -go: - - 1.8.x - - 1.9.x -go_import_path: k8s.io/utils -script: - - diff -u <(echo -n) <(gofmt -d .) - - go tool vet . - - go test -v -race ./... diff --git a/vendor/k8s.io/utils/HOWTOMOVE.md b/vendor/k8s.io/utils/HOWTOMOVE.md deleted file mode 100644 index 49028998f..000000000 --- a/vendor/k8s.io/utils/HOWTOMOVE.md +++ /dev/null @@ -1,31 +0,0 @@ -# How to move a utility pkg from other kubernetes repos - -It has 2 steps to move a pkg from other Kubernetes repos to `k8s.io/utils` repo: -- copy the pkg to `k8s.io/utils` repo -- update the import paths and `vendor/` in the repos that refer this pkg - -## Copy the pkg to `k8s.io/utils` repo - -Copying should preserve all the git history associated with it. -[Here](http://gbayer.com/development/moving-files-from-one-git-repository-to-another-preserving-history/) is a working approach. -Note: You may need to use `--allow-unrelated-histories` if you get error when running `git pull` following the post above. - -Then, you may need to restructure the package to make sure it has the following structure. - - . - ├── doc.go # Description for this package - ├── .go # utility go file - ├── _test.go # go unit tests - └── testing # All the testing framework - └── fake_.go # Testing framework go file - -[#5](https://github.com/kubernetes/utils/pull/5) is an example for this step. - -## Update the repos that refer the pkg - -You should update the import paths. -Then follow [this doc](https://github.com/kubernetes/community/blob/master/contributors/devel/godep.md) to update `vendor/` and `Godeps/`. - -You may want to run `make bazel-test` to make sure all new references work. - -[kubernetes/kubernetes#49234](https://github.com/kubernetes/kubernetes/pull/49234) is an example for this step. diff --git a/vendor/k8s.io/utils/LICENSE b/vendor/k8s.io/utils/LICENSE deleted file mode 100644 index d64569567..000000000 --- a/vendor/k8s.io/utils/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. diff --git a/vendor/k8s.io/utils/README.md b/vendor/k8s.io/utils/README.md deleted file mode 100644 index 3765eed26..000000000 --- a/vendor/k8s.io/utils/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Utils - -[![Build Status]](https://travis-ci.org/kubernetes/utils) [![GoDoc](https://godoc.org/k8s.io/utils?status.svg)](https://godoc.org/k8s.io/utils) - -A set of Go libraries that provide low-level, -kubernetes-independent packages supplementing the [Go -standard libs]. - -## Purpose - -As Kubernetes grows and spins functionality out of its -[core] and into cooperating repositories like -[apiserver], [kubectl], [kubeadm], etc., the need -arises for leaf repositories to house shared code and -avoid cycles in repository relationships. - -This repository is intended to hold shared utilities -with no Kubernetes dependence that may be of interest -to any Go project. See these [instructions for moving] -an existing package to this repository. - - -## Criteria for adding code here - -- Used by multiple Kubernetes repositories. - -- Full unit test coverage. - -- Go tools compliant (`go get`, `go test`, etc.). - -- Complex enough to be worth vendoring, rather than copying. - -- Stable, or backward compatible, API. - -- _No dependence on any Kubernetes repository_. - -## Libraries - -- [Exec](/exec) provides an interface for `os/exec`. It makes it easier - to mock and replace in tests, especially with - the [FakeExec](exec/testing/fake_exec.go) struct. - -- [Temp](/temp) provides an interface to create temporary directories. It also - provides a [FakeDir](temp/temptest) implementation to replace in tests. - -- [Clock](/clock) provides an interface for time-based operations. It allows - mocking time for testing. - -[Build Status]: https://travis-ci.org/kubernetes/utils.svg?branch=master -[Go standard libs]: https://golang.org/pkg/#stdlib -[api]: https://github.com/kubernetes/api -[apiserver]: https://github.com/kubernetes/apiserver -[core]: https://github.com/kubernetes/kubernetes -[ingress]: https://github.com/kubernetes/ingress -[kubeadm]: https://github.com/kubernetes/kubeadm -[kubectl]: https://github.com/kubernetes/kubectl -[instructions for moving]: ./HOWTOMOVE.md diff --git a/vendor/k8s.io/utils/clock/clock.go b/vendor/k8s.io/utils/clock/clock.go deleted file mode 100644 index 3d53c62b1..000000000 --- a/vendor/k8s.io/utils/clock/clock.go +++ /dev/null @@ -1,94 +0,0 @@ -/* -Copyright 2014 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 clock - -import "time" - -// Clock allows for injecting fake or real clocks into code that -// needs to do arbitrary things based on time. -type Clock interface { - Now() time.Time - Since(time.Time) time.Duration - After(d time.Duration) <-chan time.Time - NewTimer(d time.Duration) Timer - Sleep(d time.Duration) - Tick(d time.Duration) <-chan time.Time -} - -var _ = Clock(RealClock{}) - -// RealClock really calls time.Now() -type RealClock struct{} - -// Now returns the current time. -func (RealClock) Now() time.Time { - return time.Now() -} - -// Since returns time since the specified timestamp. -func (RealClock) Since(ts time.Time) time.Duration { - return time.Since(ts) -} - -// Same as time.After(d). -func (RealClock) After(d time.Duration) <-chan time.Time { - return time.After(d) -} - -func (RealClock) NewTimer(d time.Duration) Timer { - return &realTimer{ - timer: time.NewTimer(d), - } -} - -func (RealClock) Tick(d time.Duration) <-chan time.Time { - return time.Tick(d) -} - -func (RealClock) Sleep(d time.Duration) { - time.Sleep(d) -} - -// Timer allows for injecting fake or real timers into code that -// needs to do arbitrary things based on time. -type Timer interface { - C() <-chan time.Time - Stop() bool - Reset(d time.Duration) bool -} - -var _ = Timer(&realTimer{}) - -// realTimer is backed by an actual time.Timer. -type realTimer struct { - timer *time.Timer -} - -// C returns the underlying timer's channel. -func (r *realTimer) C() <-chan time.Time { - return r.timer.C -} - -// Stop calls Stop() on the underlying timer. -func (r *realTimer) Stop() bool { - return r.timer.Stop() -} - -// Reset calls Reset() on the underlying timer. -func (r *realTimer) Reset(d time.Duration) bool { - return r.timer.Reset(d) -} diff --git a/vendor/k8s.io/utils/clock/testing/fake_clock.go b/vendor/k8s.io/utils/clock/testing/fake_clock.go deleted file mode 100644 index 2ee48b739..000000000 --- a/vendor/k8s.io/utils/clock/testing/fake_clock.go +++ /dev/null @@ -1,254 +0,0 @@ -/* -Copyright 2014 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 testing - -import ( - "sync" - "time" - - "k8s.io/utils/clock" -) - -var ( - _ = clock.Clock(&FakeClock{}) - _ = clock.Clock(&IntervalClock{}) -) - -// FakeClock implements clock.Clock, but returns an arbitrary time. -type FakeClock struct { - lock sync.RWMutex - time time.Time - - // waiters are waiting for the fake time to pass their specified time - waiters []fakeClockWaiter -} - -type fakeClockWaiter struct { - targetTime time.Time - stepInterval time.Duration - skipIfBlocked bool - destChan chan time.Time - fired bool -} - -func NewFakeClock(t time.Time) *FakeClock { - return &FakeClock{ - time: t, - } -} - -// Now returns f's time. -func (f *FakeClock) Now() time.Time { - f.lock.RLock() - defer f.lock.RUnlock() - return f.time -} - -// Since returns time since the time in f. -func (f *FakeClock) Since(ts time.Time) time.Duration { - f.lock.RLock() - defer f.lock.RUnlock() - return f.time.Sub(ts) -} - -// Fake version of time.After(d). -func (f *FakeClock) After(d time.Duration) <-chan time.Time { - f.lock.Lock() - defer f.lock.Unlock() - stopTime := f.time.Add(d) - ch := make(chan time.Time, 1) // Don't block! - f.waiters = append(f.waiters, fakeClockWaiter{ - targetTime: stopTime, - destChan: ch, - }) - return ch -} - -// Fake version of time.NewTimer(d). -func (f *FakeClock) NewTimer(d time.Duration) clock.Timer { - f.lock.Lock() - defer f.lock.Unlock() - stopTime := f.time.Add(d) - ch := make(chan time.Time, 1) // Don't block! - timer := &fakeTimer{ - fakeClock: f, - waiter: fakeClockWaiter{ - targetTime: stopTime, - destChan: ch, - }, - } - f.waiters = append(f.waiters, timer.waiter) - return timer -} - -func (f *FakeClock) Tick(d time.Duration) <-chan time.Time { - f.lock.Lock() - defer f.lock.Unlock() - tickTime := f.time.Add(d) - ch := make(chan time.Time, 1) // hold one tick - f.waiters = append(f.waiters, fakeClockWaiter{ - targetTime: tickTime, - stepInterval: d, - skipIfBlocked: true, - destChan: ch, - }) - - return ch -} - -// Move clock by Duration, notify anyone that's called After, Tick, or NewTimer -func (f *FakeClock) Step(d time.Duration) { - f.lock.Lock() - defer f.lock.Unlock() - f.setTimeLocked(f.time.Add(d)) -} - -// Sets the time. -func (f *FakeClock) SetTime(t time.Time) { - f.lock.Lock() - defer f.lock.Unlock() - f.setTimeLocked(t) -} - -// Actually changes the time and checks any waiters. f must be write-locked. -func (f *FakeClock) setTimeLocked(t time.Time) { - f.time = t - newWaiters := make([]fakeClockWaiter, 0, len(f.waiters)) - for i := range f.waiters { - w := &f.waiters[i] - if !w.targetTime.After(t) { - - if w.skipIfBlocked { - select { - case w.destChan <- t: - w.fired = true - default: - } - } else { - w.destChan <- t - w.fired = true - } - - if w.stepInterval > 0 { - for !w.targetTime.After(t) { - w.targetTime = w.targetTime.Add(w.stepInterval) - } - newWaiters = append(newWaiters, *w) - } - - } else { - newWaiters = append(newWaiters, f.waiters[i]) - } - } - f.waiters = newWaiters -} - -// Returns true if After has been called on f but not yet satisfied (so you can -// write race-free tests). -func (f *FakeClock) HasWaiters() bool { - f.lock.RLock() - defer f.lock.RUnlock() - return len(f.waiters) > 0 -} - -func (f *FakeClock) Sleep(d time.Duration) { - f.Step(d) -} - -// IntervalClock implements clock.Clock, but each invocation of Now steps the clock forward the specified duration -type IntervalClock struct { - Time time.Time - Duration time.Duration -} - -// Now returns i's time. -func (i *IntervalClock) Now() time.Time { - i.Time = i.Time.Add(i.Duration) - return i.Time -} - -// Since returns time since the time in i. -func (i *IntervalClock) Since(ts time.Time) time.Duration { - return i.Time.Sub(ts) -} - -// Unimplemented, will panic. -// TODO: make interval clock use FakeClock so this can be implemented. -func (*IntervalClock) After(d time.Duration) <-chan time.Time { - panic("IntervalClock doesn't implement After") -} - -// Unimplemented, will panic. -// TODO: make interval clock use FakeClock so this can be implemented. -func (*IntervalClock) NewTimer(d time.Duration) clock.Timer { - panic("IntervalClock doesn't implement NewTimer") -} - -// Unimplemented, will panic. -// TODO: make interval clock use FakeClock so this can be implemented. -func (*IntervalClock) Tick(d time.Duration) <-chan time.Time { - panic("IntervalClock doesn't implement Tick") -} - -func (*IntervalClock) Sleep(d time.Duration) { - panic("IntervalClock doesn't implement Sleep") -} - -var _ = clock.Timer(&fakeTimer{}) - -// fakeTimer implements clock.Timer based on a FakeClock. -type fakeTimer struct { - fakeClock *FakeClock - waiter fakeClockWaiter -} - -// C returns the channel that notifies when this timer has fired. -func (f *fakeTimer) C() <-chan time.Time { - return f.waiter.destChan -} - -// Stop stops the timer and returns true if the timer has not yet fired, or false otherwise. -func (f *fakeTimer) Stop() bool { - f.fakeClock.lock.Lock() - defer f.fakeClock.lock.Unlock() - - newWaiters := make([]fakeClockWaiter, 0, len(f.fakeClock.waiters)) - for i := range f.fakeClock.waiters { - w := &f.fakeClock.waiters[i] - if w != &f.waiter { - newWaiters = append(newWaiters, *w) - } - } - - f.fakeClock.waiters = newWaiters - - return !f.waiter.fired -} - -// Reset resets the timer to the fake clock's "now" + d. It returns true if the timer has not yet -// fired, or false otherwise. -func (f *fakeTimer) Reset(d time.Duration) bool { - f.fakeClock.lock.Lock() - defer f.fakeClock.lock.Unlock() - - active := !f.waiter.fired - - f.waiter.fired = false - f.waiter.targetTime = f.fakeClock.time.Add(d) - - return active -} diff --git a/vendor/k8s.io/utils/clock/testing/fake_clock_test.go b/vendor/k8s.io/utils/clock/testing/fake_clock_test.go deleted file mode 100644 index 58fea841c..000000000 --- a/vendor/k8s.io/utils/clock/testing/fake_clock_test.go +++ /dev/null @@ -1,184 +0,0 @@ -/* -Copyright 2015 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 testing - -import ( - "testing" - "time" -) - -func TestFakeClock(t *testing.T) { - startTime := time.Now() - tc := NewFakeClock(startTime) - tc.Step(time.Second) - now := tc.Now() - if now.Sub(startTime) != time.Second { - t.Errorf("input: %s now=%s gap=%s expected=%s", startTime, now, now.Sub(startTime), time.Second) - } - - tt := tc.Now() - tc.SetTime(tt.Add(time.Hour)) - if tc.Now().Sub(tt) != time.Hour { - t.Errorf("input: %s now=%s gap=%s expected=%s", tt, tc.Now(), tc.Now().Sub(tt), time.Hour) - } -} - -func TestFakeClockSleep(t *testing.T) { - startTime := time.Now() - tc := NewFakeClock(startTime) - tc.Sleep(time.Duration(1) * time.Hour) - now := tc.Now() - if now.Sub(startTime) != time.Hour { - t.Errorf("Fake sleep failed, expected time to advance by one hour, instead, its %v", now.Sub(startTime)) - } -} - -func TestFakeAfter(t *testing.T) { - tc := NewFakeClock(time.Now()) - if tc.HasWaiters() { - t.Errorf("unexpected waiter?") - } - oneSec := tc.After(time.Second) - if !tc.HasWaiters() { - t.Errorf("unexpected lack of waiter?") - } - - oneOhOneSec := tc.After(time.Second + time.Millisecond) - twoSec := tc.After(2 * time.Second) - select { - case <-oneSec: - t.Errorf("unexpected channel read") - case <-oneOhOneSec: - t.Errorf("unexpected channel read") - case <-twoSec: - t.Errorf("unexpected channel read") - default: - } - - tc.Step(999 * time.Millisecond) - select { - case <-oneSec: - t.Errorf("unexpected channel read") - case <-oneOhOneSec: - t.Errorf("unexpected channel read") - case <-twoSec: - t.Errorf("unexpected channel read") - default: - } - - tc.Step(time.Millisecond) - select { - case <-oneSec: - // Expected! - case <-oneOhOneSec: - t.Errorf("unexpected channel read") - case <-twoSec: - t.Errorf("unexpected channel read") - default: - t.Errorf("unexpected non-channel read") - } - tc.Step(time.Millisecond) - select { - case <-oneSec: - // should not double-trigger! - t.Errorf("unexpected channel read") - case <-oneOhOneSec: - // Expected! - case <-twoSec: - t.Errorf("unexpected channel read") - default: - t.Errorf("unexpected non-channel read") - } -} - -func TestFakeTick(t *testing.T) { - tc := NewFakeClock(time.Now()) - if tc.HasWaiters() { - t.Errorf("unexpected waiter?") - } - oneSec := tc.Tick(time.Second) - if !tc.HasWaiters() { - t.Errorf("unexpected lack of waiter?") - } - - oneOhOneSec := tc.Tick(time.Second + time.Millisecond) - twoSec := tc.Tick(2 * time.Second) - select { - case <-oneSec: - t.Errorf("unexpected channel read") - case <-oneOhOneSec: - t.Errorf("unexpected channel read") - case <-twoSec: - t.Errorf("unexpected channel read") - default: - } - - tc.Step(999 * time.Millisecond) // t=.999 - select { - case <-oneSec: - t.Errorf("unexpected channel read") - case <-oneOhOneSec: - t.Errorf("unexpected channel read") - case <-twoSec: - t.Errorf("unexpected channel read") - default: - } - - tc.Step(time.Millisecond) // t=1.000 - select { - case <-oneSec: - // Expected! - case <-oneOhOneSec: - t.Errorf("unexpected channel read") - case <-twoSec: - t.Errorf("unexpected channel read") - default: - t.Errorf("unexpected non-channel read") - } - tc.Step(time.Millisecond) // t=1.001 - select { - case <-oneSec: - // should not double-trigger! - t.Errorf("unexpected channel read") - case <-oneOhOneSec: - // Expected! - case <-twoSec: - t.Errorf("unexpected channel read") - default: - t.Errorf("unexpected non-channel read") - } - - tc.Step(time.Second) // t=2.001 - tc.Step(time.Second) // t=3.001 - tc.Step(time.Second) // t=4.001 - tc.Step(time.Second) // t=5.001 - - // The one second ticker should not accumulate ticks - accumulatedTicks := 0 - drained := false - for !drained { - select { - case <-oneSec: - accumulatedTicks++ - default: - drained = true - } - } - if accumulatedTicks != 1 { - t.Errorf("unexpected number of accumulated ticks: %d", accumulatedTicks) - } -} diff --git a/vendor/k8s.io/utils/code-of-conduct.md b/vendor/k8s.io/utils/code-of-conduct.md deleted file mode 100644 index 0d15c00cf..000000000 --- a/vendor/k8s.io/utils/code-of-conduct.md +++ /dev/null @@ -1,3 +0,0 @@ -# Kubernetes Community Code of Conduct - -Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md) diff --git a/vendor/k8s.io/utils/exec/testing/fake_exec.go b/vendor/k8s.io/utils/exec/testing/fake_exec.go deleted file mode 100644 index 32cbae252..000000000 --- a/vendor/k8s.io/utils/exec/testing/fake_exec.go +++ /dev/null @@ -1,158 +0,0 @@ -/* -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 testingexec - -import ( - "context" - "fmt" - "io" - - "k8s.io/utils/exec" -) - -// A simple scripted Interface type. -type FakeExec struct { - CommandScript []FakeCommandAction - CommandCalls int - LookPathFunc func(string) (string, error) -} - -var _ exec.Interface = &FakeExec{} - -type FakeCommandAction func(cmd string, args ...string) exec.Cmd - -func (fake *FakeExec) Command(cmd string, args ...string) exec.Cmd { - if fake.CommandCalls > len(fake.CommandScript)-1 { - panic(fmt.Sprintf("ran out of Command() actions. Could not handle command [%d]: %s args: %v", fake.CommandCalls, cmd, args)) - } - i := fake.CommandCalls - fake.CommandCalls++ - return fake.CommandScript[i](cmd, args...) -} - -func (fake *FakeExec) CommandContext(ctx context.Context, cmd string, args ...string) exec.Cmd { - return fake.Command(cmd, args...) -} - -func (fake *FakeExec) LookPath(file string) (string, error) { - return fake.LookPathFunc(file) -} - -// A simple scripted Cmd type. -type FakeCmd struct { - Argv []string - CombinedOutputScript []FakeCombinedOutputAction - CombinedOutputCalls int - CombinedOutputLog [][]string - RunScript []FakeRunAction - RunCalls int - RunLog [][]string - Dirs []string - Stdin io.Reader - Stdout io.Writer - Stderr io.Writer -} - -var _ exec.Cmd = &FakeCmd{} - -func InitFakeCmd(fake *FakeCmd, cmd string, args ...string) exec.Cmd { - fake.Argv = append([]string{cmd}, args...) - return fake -} - -type FakeCombinedOutputAction func() ([]byte, error) -type FakeRunAction func() ([]byte, []byte, error) - -func (fake *FakeCmd) SetDir(dir string) { - fake.Dirs = append(fake.Dirs, dir) -} - -func (fake *FakeCmd) SetStdin(in io.Reader) { - fake.Stdin = in -} - -func (fake *FakeCmd) SetStdout(out io.Writer) { - fake.Stdout = out -} - -func (fake *FakeCmd) SetStderr(out io.Writer) { - fake.Stderr = out -} - -func (fake *FakeCmd) Run() error { - if fake.RunCalls > len(fake.RunScript)-1 { - panic("ran out of Run() actions") - } - if fake.RunLog == nil { - fake.RunLog = [][]string{} - } - i := fake.RunCalls - fake.RunLog = append(fake.RunLog, append([]string{}, fake.Argv...)) - fake.RunCalls++ - stdout, stderr, err := fake.RunScript[i]() - if stdout != nil { - fake.Stdout.Write(stdout) - } - if stderr != nil { - fake.Stderr.Write(stderr) - } - return err -} - -func (fake *FakeCmd) CombinedOutput() ([]byte, error) { - if fake.CombinedOutputCalls > len(fake.CombinedOutputScript)-1 { - panic("ran out of CombinedOutput() actions") - } - if fake.CombinedOutputLog == nil { - fake.CombinedOutputLog = [][]string{} - } - i := fake.CombinedOutputCalls - fake.CombinedOutputLog = append(fake.CombinedOutputLog, append([]string{}, fake.Argv...)) - fake.CombinedOutputCalls++ - return fake.CombinedOutputScript[i]() -} - -func (fake *FakeCmd) Output() ([]byte, error) { - return nil, fmt.Errorf("unimplemented") -} - -func (fake *FakeCmd) Stop() { - // no-op -} - -// A simple fake ExitError type. -type FakeExitError struct { - Status int -} - -var _ exec.ExitError = FakeExitError{} - -func (fake FakeExitError) String() string { - return fmt.Sprintf("exit %d", fake.Status) -} - -func (fake FakeExitError) Error() string { - return fake.String() -} - -func (fake FakeExitError) Exited() bool { - return true -} - -func (fake FakeExitError) ExitStatus() int { - return fake.Status -} diff --git a/vendor/k8s.io/utils/temp/dir.go b/vendor/k8s.io/utils/temp/dir.go deleted file mode 100644 index f5e4487b3..000000000 --- a/vendor/k8s.io/utils/temp/dir.go +++ /dev/null @@ -1,70 +0,0 @@ -/* -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 temp - -import ( - "fmt" - "io" - "io/ioutil" - "os" - "path/filepath" -) - -// Directory is an interface to a temporary directory, in which you can -// create new files. -type Directory interface { - // NewFile creates a new file in that directory. Calling NewFile - // with the same filename twice will result in an error. - NewFile(name string) (io.WriteCloser, error) - // Delete removes the directory and its content. - Delete() error -} - -// TempDir is wrapping an temporary directory on disk. -type TempDir struct { - // Name is the name (full path) of the created directory. - Name string -} - -var _ Directory = &TempDir{} - -// CreateTempDir returns a new Directory wrapping a temporary directory -// on disk. -func CreateTempDir(prefix string) (*TempDir, error) { - name, err := ioutil.TempDir("", fmt.Sprintf("%s-", prefix)) - if err != nil { - return nil, err - } - - return &TempDir{ - Name: name, - }, nil -} - -// NewFile creates a new file in the specified directory. -func (d *TempDir) NewFile(name string) (io.WriteCloser, error) { - return os.OpenFile( - filepath.Join(d.Name, name), - os.O_WRONLY|os.O_CREATE|os.O_TRUNC|os.O_EXCL, - 0700, - ) -} - -// Delete the underlying directory, and all of its content. -func (d *TempDir) Delete() error { - return os.RemoveAll(d.Name) -} diff --git a/vendor/k8s.io/utils/temp/dir_test.go b/vendor/k8s.io/utils/temp/dir_test.go deleted file mode 100644 index 0ec58c456..000000000 --- a/vendor/k8s.io/utils/temp/dir_test.go +++ /dev/null @@ -1,90 +0,0 @@ -/* -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 temp - -import ( - "io/ioutil" - "os" - "path/filepath" - "strings" - "testing" -) - -func TestTempDir(t *testing.T) { - dir, err := CreateTempDir("prefix") - if err != nil { - t.Fatal(err) - } - - // Delete the directory no matter what. - defer dir.Delete() - - // Make sure we have created the dir, with the proper name - _, err = os.Stat(dir.Name) - if err != nil { - t.Fatal(err) - } - if !strings.HasPrefix(filepath.Base(dir.Name), "prefix") { - t.Fatalf(`Directory doesn't start with "prefix": %q`, - dir.Name) - } - - // Verify that the directory is empty - entries, err := ioutil.ReadDir(dir.Name) - if err != nil { - t.Fatal(err) - } - if len(entries) != 0 { - t.Fatalf("Directory should be empty, has %d elements", - len(entries)) - } - - // Create a couple of files - _, err = dir.NewFile("ONE") - if err != nil { - t.Fatal(err) - } - _, err = dir.NewFile("TWO") - if err != nil { - t.Fatal(err) - } - // We can't create the same file twice - _, err = dir.NewFile("TWO") - if err == nil { - t.Fatal("NewFile should fail to create the same file twice") - } - - // We have created only two files - entries, err = ioutil.ReadDir(dir.Name) - if err != nil { - t.Fatal(err) - } - if len(entries) != 2 { - t.Fatalf("ReadDir should have two elements, has %d elements", - len(entries)) - } - - // Verify that deletion works - err = dir.Delete() - if err != nil { - t.Fatal(err) - } - _, err = os.Stat(dir.Name) - if err == nil { - t.Fatal("Directory should be gone, still present.") - } -} diff --git a/vendor/k8s.io/utils/temp/doc.go b/vendor/k8s.io/utils/temp/doc.go deleted file mode 100644 index b7e0c15ae..000000000 --- a/vendor/k8s.io/utils/temp/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -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 temp provides an interface to handle temporary files and -// directories. -package temp // import "k8s.io/utils/temp" diff --git a/vendor/k8s.io/utils/temp/temptest/dir.go b/vendor/k8s.io/utils/temp/temptest/dir.go deleted file mode 100644 index b142765fd..000000000 --- a/vendor/k8s.io/utils/temp/temptest/dir.go +++ /dev/null @@ -1,66 +0,0 @@ -/* -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 temptest - -import ( - "errors" - "fmt" - "io" - - "k8s.io/utils/temp" -) - -// FakeDir implements a Directory that is not backed on the -// filesystem. This is useful for testing since the created "files" are -// simple bytes.Buffer that can be inspected. -type FakeDir struct { - Files map[string]*FakeFile - Deleted bool -} - -var _ temp.Directory = &FakeDir{} - -// NewFile returns a new FakeFile if the filename doesn't exist already. -// This function will fail if the directory has already been deleted. -func (d *FakeDir) NewFile(name string) (io.WriteCloser, error) { - if d.Deleted { - return nil, errors.New("can't create file in deleted FakeDir") - } - if d.Files == nil { - d.Files = map[string]*FakeFile{} - } - f := d.Files[name] - if f != nil { - return nil, fmt.Errorf( - "FakeDir already has file named %q", - name, - ) - } - f = &FakeFile{} - d.Files[name] = f - return f, nil -} - -// Delete doesn't remove anything, but records that the directory has -// been deleted. -func (d *FakeDir) Delete() error { - if d.Deleted { - return errors.New("failed to re-delete FakeDir") - } - d.Deleted = true - return nil -} diff --git a/vendor/k8s.io/utils/temp/temptest/dir_test.go b/vendor/k8s.io/utils/temp/temptest/dir_test.go deleted file mode 100644 index 6a4631f37..000000000 --- a/vendor/k8s.io/utils/temp/temptest/dir_test.go +++ /dev/null @@ -1,67 +0,0 @@ -/* -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 temptest - -import ( - "io" - "testing" -) - -func TestFakeDir(t *testing.T) { - d := &FakeDir{} - - f, err := d.NewFile("ONE") - if err != nil { - t.Fatal(err) - } - - n, err := io.WriteString(f, "Bonjour!") - if n != 8 || err != nil { - t.Fatalf( - `WriteString(f, "Bonjour!") = (%v, %v), expected (%v, %v)`, - n, err, - 0, nil, - ) - } - if got := d.Files["ONE"].Buffer.String(); got != "Bonjour!" { - t.Fatalf(`file content is %q, expected "Bonjour!"`, got) - } - - f, err = d.NewFile("ONE") - if err == nil { - t.Fatal("Same file could be created twice.") - } - - err = d.Delete() - if err != nil { - t.Fatal(err) - } - - err = d.Delete() - if err == nil { - t.Fatal("FakeDir could be deleted twice.") - } - - f, err = d.NewFile("TWO") - if err == nil { - t.Fatal("NewFile could be created in deleted dir") - } - - if !d.Deleted { - t.Fatal("FakeDir should be deleted.") - } -} diff --git a/vendor/k8s.io/utils/temp/temptest/doc.go b/vendor/k8s.io/utils/temp/temptest/doc.go deleted file mode 100644 index 28c4f6a18..000000000 --- a/vendor/k8s.io/utils/temp/temptest/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -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 temptest provides utilities for testing temp -// files/directories testing. -package temptest diff --git a/vendor/k8s.io/utils/temp/temptest/example_test.go b/vendor/k8s.io/utils/temp/temptest/example_test.go deleted file mode 100644 index 491a614b3..000000000 --- a/vendor/k8s.io/utils/temp/temptest/example_test.go +++ /dev/null @@ -1,57 +0,0 @@ -/* -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 temptest - -import ( - "errors" - "fmt" - "io" - - "k8s.io/utils/temp" -) - -func TestedCode(dir temp.Directory) error { - f, err := dir.NewFile("filename") - if err != nil { - return err - } - _, err = io.WriteString(f, "Bonjour!") - if err != nil { - return err - } - return dir.Delete() -} - -func Example() { - dir := FakeDir{} - - err := TestedCode(&dir) - if err != nil { - panic(err) - } - - if dir.Deleted == false { - panic(errors.New("Directory should have been deleted.")) - } - - if dir.Files["filename"] == nil { - panic(errors.New(`"filename" should have been created.`)) - } - - fmt.Println(dir.Files["filename"].Buffer.String()) - // Output: Bonjour! -} diff --git a/vendor/k8s.io/utils/temp/temptest/file.go b/vendor/k8s.io/utils/temp/temptest/file.go deleted file mode 100644 index a6375fb91..000000000 --- a/vendor/k8s.io/utils/temp/temptest/file.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -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 temptest - -import ( - "bytes" - "errors" - "io" -) - -// FakeFile is an implementation of a WriteCloser, that records what has -// been written in the file (in a bytes.Buffer) and if the file has been -// closed. -type FakeFile struct { - Buffer bytes.Buffer - Closed bool -} - -var _ io.WriteCloser = &FakeFile{} - -// Write appends the contents of p to the Buffer. If the file has -// already been closed, an error is returned. -func (f *FakeFile) Write(p []byte) (n int, err error) { - if f.Closed { - return 0, errors.New("can't write to closed FakeFile") - } - return f.Buffer.Write(p) -} - -// Close records that the file has been closed. If the file has already -// been closed, an error is returned. -func (f *FakeFile) Close() error { - if f.Closed { - return errors.New("FakeFile was closed multiple times") - } - f.Closed = true - return nil -} diff --git a/vendor/k8s.io/utils/temp/temptest/file_test.go b/vendor/k8s.io/utils/temp/temptest/file_test.go deleted file mode 100644 index 0ea198f14..000000000 --- a/vendor/k8s.io/utils/temp/temptest/file_test.go +++ /dev/null @@ -1,56 +0,0 @@ -/* -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 temptest - -import ( - "io" - "testing" -) - -func TestFakeFile(t *testing.T) { - f := &FakeFile{} - - n, err := io.WriteString(f, "Bonjour!") - if n != 8 || err != nil { - t.Fatalf( - `WriteString(f, "Bonjour!") = (%v, %v), expected (%v, %v)`, - n, err, - 8, nil, - ) - } - - err = f.Close() - if err != nil { - t.Fatal(err) - } - - // File can't be closed twice. - err = f.Close() - if err == nil { - t.Fatal("FakeFile could be closed twice") - } - - // File is not writable after close. - n, err = io.WriteString(f, "Bonjour!") - if n != 0 || err == nil { - t.Fatalf( - `WriteString(f, "Bonjour!") = (%v, %v), expected (%v, %v)`, - n, err, - 0, "non-nil", - ) - } -}