oh-my-posh/src/segments/node_test.go
2023-03-13 22:05:45 +01:00

88 lines
2.9 KiB
Go

package segments
import (
"testing"
"github.com/jandedobbeleer/oh-my-posh/src/mock"
"github.com/jandedobbeleer/oh-my-posh/src/properties"
"github.com/alecthomas/assert"
)
func TestNodeMatchesVersionFile(t *testing.T) {
nodeVersion := version{
Full: "1.2.3",
Major: "1",
Minor: "2",
Patch: "3",
}
cases := []struct {
Case string
Expected bool
ExpectedVersion string
RCVersion string
}{
{Case: "no file context", Expected: true, RCVersion: ""},
{Case: "version match", Expected: true, ExpectedVersion: "1.2.3", RCVersion: "1.2.3"},
{Case: "version match with newline", Expected: true, ExpectedVersion: "1.2.3", RCVersion: "1.2.3\n"},
{Case: "version mismatch", Expected: false, ExpectedVersion: "3.2.1", RCVersion: "3.2.1"},
{Case: "version match in other format", Expected: true, ExpectedVersion: "1.2.3", RCVersion: "v1.2.3"},
{Case: "version match without patch", Expected: true, ExpectedVersion: "1.2", RCVersion: "1.2"},
{Case: "version match without patch in other format", Expected: true, ExpectedVersion: "1.2", RCVersion: "v1.2"},
{Case: "version match without minor", Expected: true, ExpectedVersion: "1", RCVersion: "1"},
{Case: "version match without minor in other format", Expected: true, ExpectedVersion: "1", RCVersion: "v1"},
}
for _, tc := range cases {
env := new(mock.MockedEnvironment)
env.On("FileContent", ".nvmrc").Return(tc.RCVersion)
node := &Node{
language: language{
env: env,
version: nodeVersion,
},
}
version, match := node.matchesVersionFile()
assert.Equal(t, tc.Expected, match, tc.Case)
assert.Equal(t, tc.ExpectedVersion, version, tc.Case)
}
}
func TestNodeInContext(t *testing.T) {
cases := []struct {
Case string
HasYarn bool
hasNPM bool
hasDefault bool
PkgMgrEnabled bool
ExpectedString string
}{
{Case: "no package manager file", ExpectedString: "", PkgMgrEnabled: true},
{Case: "yarn", HasYarn: true, ExpectedString: "yarn", PkgMgrEnabled: true},
{Case: "npm", hasNPM: true, ExpectedString: "npm", PkgMgrEnabled: true},
{Case: "default", hasDefault: true, ExpectedString: "npm", PkgMgrEnabled: true},
{Case: "disabled", HasYarn: true, ExpectedString: "", PkgMgrEnabled: false},
{Case: "yarn and npm", HasYarn: true, hasNPM: true, ExpectedString: "yarn", PkgMgrEnabled: true},
}
for _, tc := range cases {
env := new(mock.MockedEnvironment)
env.On("HasFiles", "yarn.lock").Return(tc.HasYarn)
env.On("HasFiles", "package-lock.json").Return(tc.hasNPM)
env.On("HasFiles", "package.json").Return(tc.hasDefault)
node := &Node{
language: language{
env: env,
props: properties.Map{
YarnIcon: "yarn",
NPMIcon: "npm",
FetchPackageManager: tc.PkgMgrEnabled,
},
},
}
node.loadContext()
assert.Equal(t, tc.ExpectedString, node.PackageManagerIcon, tc.Case)
}
}