From ccc44618278e260fa0d60fb8d95304c8be118be4 Mon Sep 17 00:00:00 2001 From: Jeffrey Regan Date: Wed, 6 Feb 2019 17:11:43 -0800 Subject: [PATCH] Fix nil ptr bug --- pkg/loader/fileloader.go | 3 ++- pkg/loader/fileloader_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/pkg/loader/fileloader.go b/pkg/loader/fileloader.go index 69e5a3d0d..4fa5dca67 100644 --- a/pkg/loader/fileloader.go +++ b/pkg/loader/fileloader.go @@ -267,7 +267,8 @@ func (l *fileLoader) errIfArgEqualOrHigher( // path but a different tag? func (l *fileLoader) errIfRepoCycle(newRepoSpec *git.RepoSpec) error { // TODO(monopole): Use parsed data instead of Raw(). - if strings.HasPrefix(l.repoSpec.Raw(), newRepoSpec.Raw()) { + if l.repoSpec != nil && + strings.HasPrefix(l.repoSpec.Raw(), newRepoSpec.Raw()) { return fmt.Errorf( "cycle detected: URI '%s' referenced by previous URI '%s'", newRepoSpec.Raw(), l.repoSpec.Raw()) diff --git a/pkg/loader/fileloader_test.go b/pkg/loader/fileloader_test.go index 92ae3368e..b8affe10e 100644 --- a/pkg/loader/fileloader_test.go +++ b/pkg/loader/fileloader_test.go @@ -455,3 +455,29 @@ func TestLoaderDisallowsLocalBaseFromRemoteOverlay(t *testing.T) { t.Fatalf("unexpected err: %v", err) } } + +func TestLocalLoaderReferencingGitBase(t *testing.T) { + topDir := "/whatever" + cloneRoot := topDir + "/someClone" + fSys := fs.MakeFakeFS() + fSys.MkdirAll(topDir) + fSys.MkdirAll(cloneRoot + "/foo/base") + + root, err := demandDirectoryRoot(fSys, topDir) + if err != nil { + t.Fatalf("unexpected err: %v\n", err) + } + l1 := newLoaderAtConfirmedDir( + root, fSys, nil, + git.DoNothingCloner(fs.ConfirmedDir(cloneRoot))) + if l1.Root() != topDir { + t.Fatalf("unexpected root %s", l1.Root()) + } + l2, err := l1.New("github.com/someOrg/someRepo/foo/base") + if err != nil { + t.Fatalf("unexpected err: %v\n", err) + } + if l2.Root() != cloneRoot+"/foo/base" { + t.Fatalf("unexpected root %s", l2.Root()) + } +}