mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-06 20:51:30 +02:00
feat: use new helm version parse function (#760)
* feat: use new helm version parse function Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"regexp"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/Masterminds/semver/v3"
|
||||
@@ -27,6 +28,10 @@ func (mock *mockRunner) ExecuteStdIn(cmd string, args []string, env map[string]s
|
||||
}
|
||||
|
||||
func (mock *mockRunner) Execute(cmd string, args []string, env map[string]string, enableLiveOutput bool) ([]byte, error) {
|
||||
if len(mock.output) == 0 && strings.Join(args, " ") == "version --client --short" {
|
||||
return []byte("v3.2.4+ge29ce2a"), nil
|
||||
}
|
||||
|
||||
return mock.output, mock.err
|
||||
}
|
||||
|
||||
@@ -94,7 +99,7 @@ func Test_AddRepo_Helm_3_3_2(t *testing.T) {
|
||||
logger := NewLogger(&buffer, "debug")
|
||||
helm := &execer{
|
||||
helmBinary: "helm",
|
||||
version: *semver.MustParse("3.3.2"),
|
||||
version: semver.MustParse("3.3.2"),
|
||||
logger: logger,
|
||||
kubeContext: "dev",
|
||||
runner: &mockRunner{},
|
||||
@@ -737,7 +742,7 @@ exec: helm --kube-context dev pull oci://repo/helm-charts --version 0.14.0 --des
|
||||
buffer.Reset()
|
||||
helm := &execer{
|
||||
helmBinary: tt.helmBin,
|
||||
version: *semver.MustParse(tt.helmVersion),
|
||||
version: semver.MustParse(tt.helmVersion),
|
||||
logger: logger,
|
||||
kubeContext: "dev",
|
||||
runner: &mockRunner{},
|
||||
@@ -786,7 +791,7 @@ exec: helm --kube-context dev chart export chart --destination path1 --untar --u
|
||||
buffer.Reset()
|
||||
helm := &execer{
|
||||
helmBinary: tt.helmBin,
|
||||
version: *semver.MustParse(tt.helmVersion),
|
||||
version: semver.MustParse(tt.helmVersion),
|
||||
logger: logger,
|
||||
kubeContext: "dev",
|
||||
runner: &mockRunner{},
|
||||
@@ -975,7 +980,7 @@ func Test_ShowChart(t *testing.T) {
|
||||
showChartRunner := mockRunner{output: []byte("name: my-chart\nversion: 3.2.0\n")}
|
||||
helm := &execer{
|
||||
helmBinary: "helm",
|
||||
version: *semver.MustParse("3.3.2"),
|
||||
version: semver.MustParse("3.3.2"),
|
||||
logger: NewLogger(os.Stdout, "info"),
|
||||
kubeContext: "dev",
|
||||
runner: &showChartRunner,
|
||||
@@ -992,3 +997,55 @@ func Test_ShowChart(t *testing.T) {
|
||||
t.Errorf("helmexec.ShowChart() - expected chart version was %s, received: %s", "3.2.0", metadata.Version)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseHelmVersion(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
version string
|
||||
want *semver.Version
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "helm 2",
|
||||
version: "Client: v2.16.1+ge13bc94\n",
|
||||
want: semver.MustParse("v2.16.1+ge13bc94"),
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "helm 3",
|
||||
version: "Client: v3.2.4+ge29ce2a\n",
|
||||
want: semver.MustParse("v3.2.4+ge29ce2a"),
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "helm 3 with os arch and build info",
|
||||
version: "Client v3.7.1+7.el8+g8f33223\n",
|
||||
want: semver.MustParse("v3.7.1+7.el8"),
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "empty version",
|
||||
version: "",
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
{
|
||||
name: "invalid version",
|
||||
version: "oooooo",
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := parseHelmVersion(tt.version)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("parseHelmVersion() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("parseHelmVersion() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user