2022-04-29 14:22:12 -07:00
|
|
|
package segments
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2023-01-05 12:57:38 -08:00
|
|
|
"github.com/jandedobbeleer/oh-my-posh/src/mock"
|
2022-12-28 08:30:48 -08:00
|
|
|
|
2022-04-29 14:22:12 -07:00
|
|
|
"github.com/stretchr/testify/assert"
|
2023-02-05 12:30:10 -08:00
|
|
|
mock2 "github.com/stretchr/testify/mock"
|
2022-04-29 14:22:12 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestITermSegment(t *testing.T) {
|
|
|
|
cases := []struct {
|
|
|
|
Case string
|
|
|
|
TermProgram string
|
|
|
|
SquelchMark string
|
|
|
|
Shell string
|
|
|
|
Template string
|
|
|
|
ExpectedString string
|
|
|
|
ExpectedDisabled bool
|
|
|
|
}{
|
|
|
|
{Case: "not iterm", TermProgram: "", SquelchMark: "1", Shell: "zsh", ExpectedDisabled: true},
|
|
|
|
{Case: "default mark", TermProgram: "iTerm.app", Shell: "zsh", Template: "{{ .PromptMark }}", ExpectedDisabled: true},
|
|
|
|
{Case: "zsh", TermProgram: "iTerm.app", SquelchMark: "1", Shell: "zsh", Template: "{{ .PromptMark }}", ExpectedString: `%{$(iterm2_prompt_mark)%}`},
|
|
|
|
{Case: "bash", TermProgram: "iTerm.app", SquelchMark: "1", Shell: "bash", Template: "{{ .PromptMark }}", ExpectedString: `\[$(iterm2_prompt_mark)\]`},
|
2023-02-05 12:30:10 -08:00
|
|
|
{Case: "fish", TermProgram: "iTerm.app", SquelchMark: "1", Shell: "fish", Template: "{{ .PromptMark }}", ExpectedDisabled: true},
|
2022-04-29 14:22:12 -07:00
|
|
|
{Case: "pwsh", TermProgram: "iTerm.app", SquelchMark: "1", Shell: "pwsh", Template: "{{ .PromptMark }}", ExpectedDisabled: true},
|
|
|
|
{Case: "gibberishshell", TermProgram: "iTerm.app", SquelchMark: "1", Shell: "jaserhuashf", Template: "{{ .PromptMark }}", ExpectedDisabled: true},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range cases {
|
|
|
|
env := new(mock.MockedEnvironment)
|
|
|
|
env.On("PathSeparator").Return("/")
|
|
|
|
env.On("Getenv", "TERM_PROGRAM").Return(tc.TermProgram)
|
|
|
|
env.On("Getenv", "ITERM2_SQUELCH_MARK").Return(tc.SquelchMark)
|
|
|
|
env.On("Shell").Return(tc.Shell)
|
2023-02-05 12:30:10 -08:00
|
|
|
env.On("Error", mock2.Anything).Return()
|
2022-04-29 14:22:12 -07:00
|
|
|
iterm := &ITerm{
|
|
|
|
env: env,
|
|
|
|
}
|
|
|
|
assert.Equal(t, !tc.ExpectedDisabled, iterm.Enabled(), tc.Case)
|
|
|
|
if !tc.ExpectedDisabled {
|
|
|
|
assert.Equal(t, tc.ExpectedString, renderTemplate(env, tc.Template, iterm), tc.Case)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|