From 2a5e1b5acb7e1b2a0185c0fee4f973e72915bcd1 Mon Sep 17 00:00:00 2001 From: Sean Sullivan Date: Tue, 27 Feb 2018 12:43:01 -0800 Subject: [PATCH] Update FakeLoader for simpler interface; FakeLoader uses real Loader --- loadertest/fake_loader.go | 45 +++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/loadertest/fake_loader.go b/loadertest/fake_loader.go index da03b6bd1..1dd0b6369 100644 --- a/loadertest/fake_loader.go +++ b/loadertest/fake_loader.go @@ -16,23 +16,50 @@ limitations under the License. package loadertest -import "k8s.io/kubectl/pkg/loader" +import ( + "os" -// FakeLoader implements Loader interface. + "k8s.io/kubectl/pkg/kinflate/util/fs" + "k8s.io/kubectl/pkg/loader" +) + +// FakeLoader encapsulates the delegate Loader and the fake file system. type FakeLoader struct { - Content string + fs fs.FileSystem + delegate loader.Loader +} + +// NewFakeLoader returns a Loader that delegates calls, and encapsulates +// a fake file system that the Loader reads from . "initialFilePath" parameter +// must be an absolute path. +func NewFakeLoader(initialFilePath string) FakeLoader { + // Create fake filesystem and inject it into initial Loader. + fakefs := fs.MakeFakeFS() + var schemes []loader.SchemeLoader + schemes = append(schemes, loader.NewFileLoader(fakefs)) + rootLoader := loader.Init(schemes) + loader, _ := rootLoader.New(initialFilePath) + return FakeLoader{fs: fakefs, delegate: loader} +} + +// Adds a fake file to the file system. +func (f FakeLoader) AddFile(fullFilePath string, content []byte) error { + return f.fs.WriteFile(fullFilePath, content) +} + +// Adds a fake directory to the file system. +func (f FakeLoader) AddDirectory(fullDirPath string, mode os.FileMode) error { + return f.fs.Mkdir(fullDirPath, mode) } func (f FakeLoader) Root() string { - return "/fake/root" + return f.delegate.Root() } -func (f FakeLoader) New(root string) (loader.Loader, error) { - return f, nil +func (f FakeLoader) New(newRoot string) (loader.Loader, error) { + return f.delegate.New(newRoot) } func (f FakeLoader) Load(location string) ([]byte, error) { - return []byte(f.Content), nil + return f.delegate.Load(location) } - -var _ loader.Loader = FakeLoader{}