Update FakeLoader for simpler interface; FakeLoader uses real Loader

This commit is contained in:
Sean Sullivan
2018-02-27 12:43:01 -08:00
parent 59031c1d08
commit 2a5e1b5acb

View File

@@ -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{}