From 2a33b51f00f4ead16fc79d88aca8e9464045ac78 Mon Sep 17 00:00:00 2001 From: Jan De Dobbeleer Date: Tue, 1 Dec 2020 20:43:30 +0100 Subject: [PATCH] fix: use correct folder to fetch git info for --- environment.go | 10 ++++++++++ segment_git.go | 4 ++-- segment_git_test.go | 4 ++-- segment_path_test.go | 5 +++++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/environment.go b/environment.go index 349b827d21e4..41419062764c 100644 --- a/environment.go +++ b/environment.go @@ -29,6 +29,7 @@ type environmentInfo interface { getcwd() string homeDir() string hasFiles(pattern string) bool + hasFilesInDir(dir, pattern string) bool hasFolder(folder string) bool getFileContent(file string) string getPathSeperator() string @@ -95,6 +96,15 @@ func (env *environment) hasFiles(pattern string) bool { return len(matches) > 0 } +func (env *environment) hasFilesInDir(dir, pattern string) bool { + pattern = dir + env.getPathSeperator() + pattern + matches, err := filepath.Glob(pattern) + if err != nil { + return false + } + return len(matches) > 0 +} + func (env *environment) hasFolder(folder string) bool { _, err := os.Stat(folder) return !os.IsNotExist(err) diff --git a/segment_git.go b/segment_git.go index 6720688f9b05..dc8a7a1c6c10 100644 --- a/segment_git.go +++ b/segment_git.go @@ -279,8 +279,8 @@ func (g *git) getGitHEADContext(ref string) string { } func (g *git) hasGitFile(file string) bool { - files := fmt.Sprintf("%s/.git/%s", g.repo.root, file) - return g.env.hasFiles(files) + files := fmt.Sprintf(".git/%s", file) + return g.env.hasFilesInDir(g.repo.root, files) } func (g *git) hasGitFolder(folder string) bool { diff --git a/segment_git_test.go b/segment_git_test.go index 3e6f43dd52cd..dd4159adef50 100644 --- a/segment_git_test.go +++ b/segment_git_test.go @@ -72,8 +72,8 @@ func setupHEADContextEnv(context *detachedContext) *git { env.On("getFileContent", "/.git/rebase-apply/head-name").Return(context.origin) env.On("getFileContent", "/.git/CHERRY_PICK_HEAD").Return(context.cherryPickSHA) env.On("getFileContent", "/.git/MERGE_HEAD").Return(context.mergeHEAD) - env.On("hasFiles", "/.git/CHERRY_PICK_HEAD").Return(context.cherryPick) - env.On("hasFiles", "/.git/MERGE_HEAD").Return(context.merge) + env.On("hasFilesInDir", "", ".git/CHERRY_PICK_HEAD").Return(context.cherryPick) + env.On("hasFilesInDir", "", ".git/MERGE_HEAD").Return(context.merge) env.mockGitCommand(context.currentCommit, "rev-parse", "--short", "HEAD") env.mockGitCommand(context.tagName, "describe", "--tags", "--exact-match") env.mockGitCommand(context.origin, "name-rev", "--name-only", "--exclude=tags/*", context.origin) diff --git a/segment_path_test.go b/segment_path_test.go index 0dd4951a53d4..fe73ae515331 100644 --- a/segment_path_test.go +++ b/segment_path_test.go @@ -33,6 +33,11 @@ func (env *MockedEnvironment) hasFiles(pattern string) bool { return args.Bool(0) } +func (env *MockedEnvironment) hasFilesInDir(dir, pattern string) bool { + args := env.Called(dir, pattern) + return args.Bool(0) +} + func (env *MockedEnvironment) hasFolder(folder string) bool { args := env.Called(folder) return args.Bool(0)