mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-02-21 02:55:37 -08:00
87 lines
2.7 KiB
Go
87 lines
2.7 KiB
Go
package segments
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/alecthomas/assert"
|
|
"github.com/jandedobbeleer/oh-my-posh/src/mock"
|
|
"github.com/jandedobbeleer/oh-my-posh/src/platform"
|
|
"github.com/jandedobbeleer/oh-my-posh/src/properties"
|
|
mock2 "github.com/stretchr/testify/mock"
|
|
)
|
|
|
|
func TestQuasar(t *testing.T) {
|
|
packageLockFile := `{
|
|
"name": "quasar-project",
|
|
"version": "0.0.1",
|
|
"lockfileVersion": 2,
|
|
"requires": true,
|
|
"dependencies": {
|
|
"@quasar/app-vite": {
|
|
"version": "1.4.3",
|
|
"resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.4.3.tgz",
|
|
"integrity": "sha512-5iMs1sk6fyYTFoRVySwFXWL/PS23UEsdk+YSFejhXnSs5fVDmb2GQMguCHwDl3jPIHjZ7A+XKkb2iWx9pjiPXw==",
|
|
"dev": true
|
|
},
|
|
"vite": {
|
|
"version": "2.9.16",
|
|
"resolved": "https://registry.npmjs.org/vite/-/vite-2.9.16.tgz",
|
|
"integrity": "sha512-X+6q8KPyeuBvTQV8AVSnKDvXoBMnTx8zxh54sOwmmuOdxkjMmEJXH2UEchA+vTMps1xw9vL64uwJOWryULg7nA==",
|
|
"dev": true,
|
|
"requires": {
|
|
"esbuild": "^0.14.27",
|
|
"fsevents": "~2.3.2",
|
|
"postcss": "^8.4.13",
|
|
"resolve": "^1.22.0",
|
|
"rollup": ">=2.59.0 <2.78.0"
|
|
}
|
|
}
|
|
}
|
|
}`
|
|
|
|
cases := []struct {
|
|
Case string
|
|
ExpectedString string
|
|
Version string
|
|
HasPackageLockFile bool
|
|
FetchDependencies bool
|
|
}{
|
|
{Case: "@quasar/cli v2.2.1", ExpectedString: "\uea6a 2.2.1", Version: "@quasar/cli v2.2.1"},
|
|
{
|
|
Case: "@quasar/cli v2.2.1 with vite",
|
|
Version: "@quasar/cli v2.2.1",
|
|
HasPackageLockFile: true,
|
|
FetchDependencies: true,
|
|
ExpectedString: "\uea6a 2.2.1 \ueb29 2.9.16",
|
|
},
|
|
}
|
|
for _, tc := range cases {
|
|
env := new(mock.MockedEnvironment)
|
|
env.On("HasCommand", "quasar").Return(true)
|
|
env.On("RunCommand", "quasar", []string{"--version"}).Return(tc.Version, nil)
|
|
env.On("Pwd").Return("/usr/home/project")
|
|
env.On("Home").Return("/usr/home")
|
|
env.On("DebugF", mock2.Anything, mock2.Anything).Return(nil)
|
|
env.On("TemplateCache").Return(&platform.TemplateCache{
|
|
Env: make(map[string]string),
|
|
})
|
|
env.On("HasFilesInDir", "/usr/home/project", "package-lock.json").Return(tc.HasPackageLockFile)
|
|
fileInfo := &platform.FileInfo{ParentFolder: "/usr/home/project", IsDir: true}
|
|
env.On("HasParentFilePath", "quasar.config").Return(fileInfo, nil)
|
|
env.On("FileContent", filepath.Join(fileInfo.ParentFolder, "package-lock.json")).Return(packageLockFile)
|
|
|
|
props := properties.Map{
|
|
properties.FetchVersion: true,
|
|
FetchDependencies: tc.FetchDependencies,
|
|
}
|
|
|
|
quasar := &Quasar{}
|
|
quasar.Init(props, env)
|
|
|
|
assert.True(t, quasar.Enabled(), fmt.Sprintf("Failed in case: %s", tc.Case))
|
|
assert.Equal(t, tc.ExpectedString, renderTemplate(env, quasar.Template(), quasar), fmt.Sprintf("Failed in case: %s", tc.Case))
|
|
}
|
|
}
|