mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-14 02:20:53 +00:00
Consult history in fileloader.
Fixes #366 To reproduce #366, add ``` bases: - . ``` to `examples/helloWorld/kustomization.yaml`, attempt to build it, and enjoy the stack overflow. This PR fixes this by adding history to file loaders, allowing one to avoid cycles in overlay->base relationships. To make entry points clearer, this PR exposes only two public ways to make a fresh (no-history) loader * rooted at `/` * rooted at the process's current working directory. When making a new loader from an existing loader, retaining history along an overlay trace, the only allowed use is to go deeper into a file hierarchy, or go up and over to a never before visited sibling. This fix can probably be defeated by devious symbolic links.
This commit is contained in:
@@ -18,6 +18,7 @@ limitations under the License.
|
||||
package loadertest
|
||||
|
||||
import (
|
||||
"log"
|
||||
"sigs.k8s.io/kustomize/pkg/fs"
|
||||
"sigs.k8s.io/kustomize/pkg/ifc"
|
||||
"sigs.k8s.io/kustomize/pkg/loader"
|
||||
@@ -34,10 +35,13 @@ type FakeLoader struct {
|
||||
// must be an full, absolute directory (trailing slash doesn't matter).
|
||||
func NewFakeLoader(initialDir string) FakeLoader {
|
||||
// Create fake filesystem and inject it into initial Loader.
|
||||
fakefs := fs.MakeFakeFS()
|
||||
rootLoader := loader.NewFileLoader(fakefs)
|
||||
ldr, _ := rootLoader.New(initialDir)
|
||||
return FakeLoader{fs: fakefs, delegate: ldr}
|
||||
fSys := fs.MakeFakeFS()
|
||||
fSys.Mkdir(initialDir)
|
||||
ldr, err := loader.NewFileLoaderAtRoot(fSys).New(initialDir)
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to make loader: %v", err)
|
||||
}
|
||||
return FakeLoader{fs: fSys, delegate: ldr}
|
||||
}
|
||||
|
||||
// AddFile adds a fake file to the file system.
|
||||
|
||||
Reference in New Issue
Block a user