From a47070b9d8d0f4479aa1193befabb66fb00ddd18 Mon Sep 17 00:00:00 2001 From: Ivan <56458442+ivan-the-terrible@users.noreply.github.com> Date: Fri, 19 Apr 2024 08:50:40 -0400 Subject: [PATCH] fix(firebase): sub path validation --- src/segments/firebase.go | 3 ++- src/segments/firebase_test.go | 25 +++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/segments/firebase.go b/src/segments/firebase.go index 9b989d40..fc0e58e3 100644 --- a/src/segments/firebase.go +++ b/src/segments/firebase.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" "path/filepath" + "strings" "github.com/jandedobbeleer/oh-my-posh/src/platform" "github.com/jandedobbeleer/oh-my-posh/src/properties" @@ -53,7 +54,7 @@ func (f *Firebase) Enabled() bool { // Test if the current directory is a project path // and if it is, return the project name for key, value := range data.ActiveProject { - if key == f.env.Pwd() { + if strings.HasPrefix(f.env.Pwd(), key) { f.Project = value return true } diff --git a/src/segments/firebase_test.go b/src/segments/firebase_test.go index 6b04097a..e24c428f 100644 --- a/src/segments/firebase_test.go +++ b/src/segments/firebase_test.go @@ -10,22 +10,31 @@ import ( ) func TestFirebaseSegment(t *testing.T) { + config := `{ + "activeProjects": { + "path": "project-name" + } + }` cases := []struct { Case string - CfgData string ActiveConfig string + ActivePath string ExpectedEnabled bool ExpectedString string }{ { Case: "happy path", ExpectedEnabled: true, - ActiveConfig: `{ - "activeProjects": { - "path": "project-name" - } - }`, - ExpectedString: "project-name", + ActiveConfig: config, + ActivePath: "path", + ExpectedString: "project-name", + }, + { + Case: "happy subpath", + ExpectedEnabled: true, + ActiveConfig: config, + ActivePath: "path/subpath", + ExpectedString: "project-name", }, { Case: "no active config", @@ -46,7 +55,7 @@ func TestFirebaseSegment(t *testing.T) { for _, tc := range cases { env := new(mock.MockedEnvironment) env.On("Home").Return("home") - env.On("Pwd").Return("path") + env.On("Pwd").Return(tc.ActivePath) fcPath := filepath.Join("home", ".config", "configstore", "firebase-tools.json") env.On("FileContent", fcPath).Return(tc.ActiveConfig) env.On("Error", mock2.Anything).Return()