mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-02-21 02:55:37 -08:00
144 lines
3.3 KiB
Go
144 lines
3.3 KiB
Go
package segments
|
|
|
|
import (
|
|
"path"
|
|
"testing"
|
|
|
|
"github.com/jandedobbeleer/oh-my-posh/src/mock"
|
|
"github.com/jandedobbeleer/oh-my-posh/src/platform"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
mock2 "github.com/stretchr/testify/mock"
|
|
)
|
|
|
|
func TestGcpSegment(t *testing.T) {
|
|
cases := []struct {
|
|
Case string
|
|
CfgData string
|
|
ActiveConfig string
|
|
ExpectedEnabled bool
|
|
ExpectedString string
|
|
}{
|
|
{
|
|
Case: "happy path",
|
|
ExpectedEnabled: true,
|
|
ActiveConfig: "production",
|
|
CfgData: `
|
|
[core]
|
|
account = test@example.com
|
|
project = test-test-test
|
|
|
|
[compute]
|
|
region = europe-test1
|
|
`,
|
|
ExpectedString: "test-test-test :: europe-test1 :: test@example.com",
|
|
},
|
|
{
|
|
Case: "no active config",
|
|
ExpectedEnabled: false,
|
|
},
|
|
{
|
|
Case: "empty config",
|
|
ActiveConfig: "production",
|
|
ExpectedEnabled: false,
|
|
},
|
|
{
|
|
Case: "bad config",
|
|
ActiveConfig: "production",
|
|
CfgData: "{bad}",
|
|
ExpectedEnabled: false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
env := new(mock.MockedEnvironment)
|
|
env.On("Getenv", "CLOUDSDK_CONFIG").Return("config")
|
|
fcPath := path.Join("config", "active_config")
|
|
env.On("FileContent", fcPath).Return(tc.ActiveConfig)
|
|
cfgpath := path.Join("config", "configurations", "config_production")
|
|
env.On("FileContent", cfgpath).Return(tc.CfgData)
|
|
env.On("Error", mock2.Anything).Return()
|
|
g := &Gcp{
|
|
env: env,
|
|
}
|
|
assert.Equal(t, tc.ExpectedEnabled, g.Enabled(), tc.Case)
|
|
if tc.ExpectedEnabled {
|
|
assert.Equal(t, tc.ExpectedString, renderTemplate(env, "{{.Project}} :: {{.Region}} :: {{.Account}}", g), tc.Case)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGetConfigDirectory(t *testing.T) {
|
|
cases := []struct {
|
|
Case string
|
|
GOOS string
|
|
Home string
|
|
AppData string
|
|
CloudSDKConfig string
|
|
Expected string
|
|
}{
|
|
{
|
|
Case: "CLOUDSDK_CONFIG",
|
|
CloudSDKConfig: "/Users/posh/.config/gcloud",
|
|
Expected: "/Users/posh/.config/gcloud",
|
|
},
|
|
{
|
|
Case: "Windows",
|
|
GOOS: platform.WINDOWS,
|
|
AppData: "/Users/posh/.config",
|
|
Expected: "/Users/posh/.config/gcloud",
|
|
},
|
|
{
|
|
Case: "default",
|
|
Home: "/Users/posh2/",
|
|
Expected: "/Users/posh2/.config/gcloud",
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
env := new(mock.MockedEnvironment)
|
|
env.On("Getenv", "CLOUDSDK_CONFIG").Return(tc.CloudSDKConfig)
|
|
env.On("Getenv", "APPDATA").Return(tc.AppData)
|
|
env.On("Home").Return(tc.Home)
|
|
env.On("GOOS").Return(tc.GOOS)
|
|
g := &Gcp{
|
|
env: env,
|
|
}
|
|
assert.Equal(t, tc.Expected, g.getConfigDirectory(), tc.Case)
|
|
}
|
|
}
|
|
|
|
func TestGetActiveConfig(t *testing.T) {
|
|
cases := []struct {
|
|
Case string
|
|
ActiveConfig string
|
|
ExpectedString string
|
|
ExpectedError string
|
|
}{
|
|
{
|
|
Case: "No active config",
|
|
ExpectedError: GCPNOACTIVECONFIG,
|
|
},
|
|
{
|
|
Case: "No active config",
|
|
ActiveConfig: "production",
|
|
ExpectedString: "production",
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
env := new(mock.MockedEnvironment)
|
|
env.On("FileContent", "active_config").Return(tc.ActiveConfig)
|
|
g := &Gcp{
|
|
env: env,
|
|
}
|
|
got, err := g.getActiveConfig("")
|
|
assert.Equal(t, tc.ExpectedString, got, tc.Case)
|
|
if len(tc.ExpectedError) > 0 {
|
|
assert.EqualError(t, err, tc.ExpectedError, tc.Case)
|
|
} else {
|
|
assert.NoError(t, err, tc.Case)
|
|
}
|
|
}
|
|
}
|