Merge pull request #32422 from mmorel-35/testifylint-manual-assert-pkg-7

chore(pkg): refactor: convert tests to testify assert/require part 7
pull/32453/head
Terry Howe 2 months ago committed by GitHub
commit eea1defc88
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -37,6 +37,7 @@ import (
chart "helm.sh/helm/v4/pkg/chart/v2" chart "helm.sh/helm/v4/pkg/chart/v2"
"helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/chart/v2/loader"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
) )
@ -62,29 +63,16 @@ func TestSave(t *testing.T) {
chartWithInvalidJSON := withSchema(*c, []byte("{")) chartWithInvalidJSON := withSchema(*c, []byte("{"))
where, err := Save(c, dest) where, err := Save(c, dest)
if err != nil { require.NoError(t, err, "Failed to save")
t.Fatalf("Failed to save: %s", err) require.Truef(t, strings.HasPrefix(where, dest), "Expected %q to start with %q", where, dest)
} require.Truef(t, strings.HasSuffix(where, ".tgz"), "Expected %q to end with .tgz", where)
if !strings.HasPrefix(where, dest) {
t.Fatalf("Expected %q to start with %q", where, dest)
}
if !strings.HasSuffix(where, ".tgz") {
t.Fatalf("Expected %q to end with .tgz", where)
}
c2, err := loader.LoadFile(where) c2, err := loader.LoadFile(where)
if err != nil { require.NoError(t, err)
t.Fatal(err) require.Equal(t, c.Name(), c2.Name(), "Expected chart archive to have %q, got %q", c.Name(), c2.Name())
} require.Len(t, c2.Files, 1, "Files data did not match")
if c2.Name() != c.Name() { require.Equal(t, "scheherazade/shahryar.txt", c2.Files[0].Name, "Files data did not match")
t.Fatalf("Expected chart archive to have %q, got %q", c.Name(), c2.Name()) require.Nil(t, c2.Lock, "Expected v1 chart archive not to contain Chart.lock file")
}
if len(c2.Files) != 1 || c2.Files[0].Name != "scheherazade/shahryar.txt" {
t.Fatal("Files data did not match")
}
if c2.Lock != nil {
t.Fatal("Expected v1 chart archive not to contain Chart.lock file")
}
if !bytes.Equal(c.Schema, c2.Schema) { if !bytes.Equal(c.Schema, c2.Schema) {
indentation := 4 indentation := 4
@ -92,25 +80,16 @@ func TestSave(t *testing.T) {
formattedActual := Indent(indentation, string(c2.Schema)) formattedActual := Indent(indentation, string(c2.Schema))
t.Fatalf("Schema data did not match.\nExpected:\n%s\nActual:\n%s", formattedExpected, formattedActual) t.Fatalf("Schema data did not match.\nExpected:\n%s\nActual:\n%s", formattedExpected, formattedActual)
} }
if _, err := Save(&chartWithInvalidJSON, dest); err == nil { _, err = Save(&chartWithInvalidJSON, dest)
t.Fatal("Invalid JSON was not caught while saving chart") require.Error(t, err, "Invalid JSON was not caught while saving chart")
}
c.Metadata.APIVersion = chart.APIVersionV2 c.Metadata.APIVersion = chart.APIVersionV2
where, err = Save(c, dest) where, err = Save(c, dest)
if err != nil { require.NoError(t, err, "Failed to save")
t.Fatalf("Failed to save: %s", err)
}
c2, err = loader.LoadFile(where) c2, err = loader.LoadFile(where)
if err != nil { require.NoError(t, err)
t.Fatal(err) require.NotNil(t, c2.Lock, "Expected v2 chart archive to contain a Chart.lock file")
} require.Equal(t, c.Lock.Digest, c2.Lock.Digest, "Chart.lock data did not match")
if c2.Lock == nil {
t.Fatal("Expected v2 chart archive to contain a Chart.lock file")
}
if c2.Lock.Digest != c.Lock.Digest {
t.Fatal("Chart.lock data did not match")
}
}) })
} }
@ -128,9 +107,7 @@ func TestSave(t *testing.T) {
}, },
} }
_, err := Save(c, tmp) _, err := Save(c, tmp)
if err == nil { require.Error(t, err, "Expected error saving chart with invalid name")
t.Fatal("Expected error saving chart with invalid name")
}
} }
// https://github.com/helm/helm/issues/31844 // https://github.com/helm/helm/issues/31844
@ -145,20 +122,14 @@ func TestSavedGzipExtraFieldIsValid(t *testing.T) {
} }
where, err := Save(c, tmp) where, err := Save(c, tmp)
if err != nil { require.NoError(t, err, "Failed to save")
t.Fatalf("Failed to save: %s", err)
}
f, err := os.Open(where) f, err := os.Open(where)
if err != nil { require.NoError(t, err, "Failed to open saved file")
t.Fatalf("Failed to open saved file: %s", err)
}
defer f.Close() defer f.Close()
r, err := gzip.NewReader(f) r, err := gzip.NewReader(f)
if err != nil { require.NoError(t, err, "Failed to create gzip reader")
t.Fatalf("Failed to create gzip reader: %s", err)
}
defer r.Close() defer r.Close()
// RFC 1952 §2.3.1.1: // RFC 1952 §2.3.1.1:
@ -214,20 +185,14 @@ func TestSavePreservesTimestamps(t *testing.T) {
} }
where, err := Save(c, tmp) where, err := Save(c, tmp)
if err != nil { require.NoError(t, err, "Failed to save")
t.Fatalf("Failed to save: %s", err)
}
allHeaders, err := retrieveAllHeadersFromTar(where) allHeaders, err := retrieveAllHeadersFromTar(where)
if err != nil { require.NoError(t, err, "Failed to parse tar")
t.Fatalf("Failed to parse tar: %v", err)
}
roundedTime := initialCreateTime.Round(time.Second) roundedTime := initialCreateTime.Round(time.Second)
for _, header := range allHeaders { for _, header := range allHeaders {
if !header.ModTime.Equal(roundedTime) { require.Truef(t, header.ModTime.Equal(roundedTime), "File timestamp not preserved: %v", header.ModTime)
t.Fatalf("File timestamp not preserved: %v", header.ModTime)
}
} }
} }
@ -248,20 +213,14 @@ func TestSaveWithSourceDateEpoch(t *testing.T) {
c.StampModTimes(epoch) c.StampModTimes(epoch)
where, err := Save(c, tmp) where, err := Save(c, tmp)
if err != nil { require.NoError(t, err, "Failed to save")
t.Fatalf("Failed to save: %s", err)
}
allHeaders, err := retrieveAllHeadersFromTar(where) allHeaders, err := retrieveAllHeadersFromTar(where)
if err != nil { require.NoError(t, err, "Failed to parse tar")
t.Fatalf("Failed to parse tar: %v", err)
}
expected := epoch.Round(time.Second) expected := epoch.Round(time.Second)
for _, header := range allHeaders { for _, header := range allHeaders {
if !header.ModTime.Equal(expected) { require.Truef(t, header.ModTime.Equal(expected), "Expected SOURCE_DATE_EPOCH timestamp %v, got %v for %q", expected, header.ModTime, header.Name)
t.Fatalf("Expected SOURCE_DATE_EPOCH timestamp %v, got %v for %q", expected, header.ModTime, header.Name)
}
} }
} }
@ -317,37 +276,25 @@ func TestSaveDir(t *testing.T) {
}, },
} }
if err := SaveDir(c, tmp); err != nil { require.NoErrorf(t, SaveDir(c, tmp), "Failed to save")
t.Fatalf("Failed to save: %s", err)
}
c2, err := loader.LoadDir(tmp + "/ahab") c2, err := loader.LoadDir(tmp + "/ahab")
if err != nil { require.NoError(t, err)
t.Fatal(err)
}
if c2.Name() != c.Name() { require.Equal(t, c.Name(), c2.Name(), "Expected chart archive to have %q, got %q", c.Name(), c2.Name())
t.Fatalf("Expected chart archive to have %q, got %q", c.Name(), c2.Name())
}
if len(c2.Templates) != 1 || c2.Templates[0].Name != c.Templates[0].Name { require.Len(t, c2.Templates, 1, "Templates data did not match")
t.Fatal("Templates data did not match") require.Equal(t, c2.Templates[0].Name, c.Templates[0].Name, "Templates data did not match")
}
if len(c2.Files) != 1 || c2.Files[0].Name != c.Files[0].Name { require.Len(t, c2.Files, 1, "Files data did not match")
t.Fatal("Files data did not match") require.Equal(t, c2.Files[0].Name, c.Files[0].Name, "Files data did not match")
}
tmp2 := t.TempDir() tmp2 := t.TempDir()
c.Metadata.Name = "../ahab" c.Metadata.Name = "../ahab"
pth := filepath.Join(tmp2, "tmpcharts") pth := filepath.Join(tmp2, "tmpcharts")
if err := os.MkdirAll(filepath.Join(pth), 0o755); err != nil { require.NoError(t, os.MkdirAll(filepath.Join(pth), 0o755))
t.Fatal(err)
}
if err := SaveDir(c, pth); err.Error() != "\"../ahab\" is not a valid chart name" { require.EqualErrorf(t, SaveDir(c, pth), "\"../ahab\" is not a valid chart name", "Did not get expected error for chart named %q", c.Name())
t.Fatalf("Did not get expected error for chart named %q", c.Name())
}
} }
func TestRepeatableSave(t *testing.T) { func TestRepeatableSave(t *testing.T) {
@ -408,18 +355,12 @@ func TestRepeatableSave(t *testing.T) {
// create package // create package
dest := path.Join(tmp, "newdir") dest := path.Join(tmp, "newdir")
where, err := Save(test.chart, dest) where, err := Save(test.chart, dest)
if err != nil { require.NoError(t, err, "Failed to save")
t.Fatalf("Failed to save: %s", err)
}
// get shasum for package // get shasum for package
result, err := sha256Sum(where) result, err := sha256Sum(where)
if err != nil { require.NoError(t, err, "Failed to check shasum")
t.Fatalf("Failed to check shasum: %s", err)
}
// assert that the package SHA is what we wanted. // assert that the package SHA is what we wanted.
if result != test.want { assert.Equal(t, test.want, result, "FormatName() result = %v, want %v", result, test.want)
t.Errorf("FormatName() result = %v, want %v", result, test.want)
}
}) })
} }
} }

@ -23,10 +23,12 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"reflect" "reflect"
"strings"
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"helm.sh/helm/v4/pkg/chart/common" "helm.sh/helm/v4/pkg/chart/common"
chart "helm.sh/helm/v4/pkg/chart/v2" chart "helm.sh/helm/v4/pkg/chart/v2"
"helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/chart/v2/loader"
@ -46,13 +48,9 @@ func TestUpgradeCmd(t *testing.T) {
}, },
} }
chartPath := filepath.Join(tmpChart, cfile.Metadata.Name) chartPath := filepath.Join(tmpChart, cfile.Metadata.Name)
if err := chartutil.SaveDir(cfile, tmpChart); err != nil { require.NoErrorf(t, chartutil.SaveDir(cfile, tmpChart), "Error creating chart for upgrade")
t.Fatalf("Error creating chart for upgrade: %v", err)
}
ch, err := loader.Load(chartPath) ch, err := loader.Load(chartPath)
if err != nil { require.NoError(t, err, "Error loading chart")
t.Fatalf("Error loading chart: %v", err)
}
_ = release.Mock(&release.MockReleaseOptions{ _ = release.Mock(&release.MockReleaseOptions{
Name: "funny-bunny", Name: "funny-bunny",
Chart: ch, Chart: ch,
@ -61,25 +59,17 @@ func TestUpgradeCmd(t *testing.T) {
// update chart version // update chart version
cfile.Metadata.Version = "0.1.2" cfile.Metadata.Version = "0.1.2"
if err := chartutil.SaveDir(cfile, tmpChart); err != nil { require.NoErrorf(t, chartutil.SaveDir(cfile, tmpChart), "Error creating chart")
t.Fatalf("Error creating chart: %v", err)
}
ch, err = loader.Load(chartPath) ch, err = loader.Load(chartPath)
if err != nil { require.NoError(t, err, "Error loading updated chart")
t.Fatalf("Error loading updated chart: %v", err)
}
// update chart version again // update chart version again
cfile.Metadata.Version = "0.1.3" cfile.Metadata.Version = "0.1.3"
if err := chartutil.SaveDir(cfile, tmpChart); err != nil { require.NoErrorf(t, chartutil.SaveDir(cfile, tmpChart), "Error creating chart")
t.Fatalf("Error creating chart: %v", err)
}
var ch2 *chart.Chart var ch2 *chart.Chart
ch2, err = loader.Load(chartPath) ch2, err = loader.Load(chartPath)
if err != nil { require.NoError(t, err, "Error loading updated chart")
t.Fatalf("Error loading updated chart: %v", err)
}
missingDepsPath := "testdata/testcharts/chart-missing-deps" missingDepsPath := "testdata/testcharts/chart-missing-deps"
badDepsPath := "testdata/testcharts/chart-bad-requirements" badDepsPath := "testdata/testcharts/chart-bad-requirements"
@ -265,22 +255,14 @@ func TestUpgradeWithValue(t *testing.T) {
cmd := fmt.Sprintf("upgrade %s --set favoriteDrink=tea '%s'", releaseName, chartPath) cmd := fmt.Sprintf("upgrade %s --set favoriteDrink=tea '%s'", releaseName, chartPath)
_, _, err := executeActionCommandC(store, cmd) _, _, err := executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedReli, err := store.Get(releaseName, 4) updatedReli, err := store.Get(releaseName, 4)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedRel, err := releaserToV1Release(updatedReli)
if err != nil {
t.Errorf("unexpected error, got '%v'", err)
}
if !strings.Contains(updatedRel.Manifest, "drink: tea") { updatedRel, err := releaserToV1Release(updatedReli)
t.Errorf("The value is not set correctly. manifest: %s", updatedRel.Manifest) require.NoError(t, err)
} assert.Contains(t, updatedRel.Manifest, "drink: tea", "The value is not set correctly. manifest: %s", updatedRel.Manifest)
} }
func TestUpgradeWithStringValue(t *testing.T) { func TestUpgradeWithStringValue(t *testing.T) {
@ -295,22 +277,14 @@ func TestUpgradeWithStringValue(t *testing.T) {
cmd := fmt.Sprintf("upgrade %s --set-string favoriteDrink=coffee '%s'", releaseName, chartPath) cmd := fmt.Sprintf("upgrade %s --set-string favoriteDrink=coffee '%s'", releaseName, chartPath)
_, _, err := executeActionCommandC(store, cmd) _, _, err := executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedReli, err := store.Get(releaseName, 4) updatedReli, err := store.Get(releaseName, 4)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedRel, err := releaserToV1Release(updatedReli)
if err != nil {
t.Errorf("unexpected error, got '%v'", err)
}
if !strings.Contains(updatedRel.Manifest, "drink: coffee") { updatedRel, err := releaserToV1Release(updatedReli)
t.Errorf("The value is not set correctly. manifest: %s", updatedRel.Manifest) require.NoError(t, err)
} assert.Contains(t, updatedRel.Manifest, "drink: coffee", "The value is not set correctly. manifest: %s", updatedRel.Manifest)
} }
func TestUpgradeInstallWithSubchartNotes(t *testing.T) { func TestUpgradeInstallWithSubchartNotes(t *testing.T) {
@ -325,26 +299,15 @@ func TestUpgradeInstallWithSubchartNotes(t *testing.T) {
cmd := fmt.Sprintf("upgrade %s -i --render-subchart-notes '%s'", releaseName, "testdata/testcharts/chart-with-subchart-notes") cmd := fmt.Sprintf("upgrade %s -i --render-subchart-notes '%s'", releaseName, "testdata/testcharts/chart-with-subchart-notes")
_, _, err := executeActionCommandC(store, cmd) _, _, err := executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
upgradedReli, err := store.Get(releaseName, 2) upgradedReli, err := store.Get(releaseName, 2)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
upgradedRel, err := releaserToV1Release(upgradedReli)
if err != nil {
t.Errorf("unexpected error, got '%v'", err)
}
if !strings.Contains(upgradedRel.Info.Notes, "PARENT NOTES") { upgradedRel, err := releaserToV1Release(upgradedReli)
t.Errorf("The parent notes are not set correctly. NOTES: %s", upgradedRel.Info.Notes) require.NoError(t, err)
} assert.Contains(t, upgradedRel.Info.Notes, "PARENT NOTES", "The parent notes are not set correctly. NOTES: %s", upgradedRel.Info.Notes)
assert.Contains(t, upgradedRel.Info.Notes, "SUBCHART NOTES", "The subchart notes are not set correctly. NOTES: %s", upgradedRel.Info.Notes)
if !strings.Contains(upgradedRel.Info.Notes, "SUBCHART NOTES") {
t.Errorf("The subchart notes are not set correctly. NOTES: %s", upgradedRel.Info.Notes)
}
} }
func TestUpgradeWithValuesFile(t *testing.T) { func TestUpgradeWithValuesFile(t *testing.T) {
@ -359,22 +322,14 @@ func TestUpgradeWithValuesFile(t *testing.T) {
cmd := fmt.Sprintf("upgrade %s --values testdata/testcharts/upgradetest/values.yaml '%s'", releaseName, chartPath) cmd := fmt.Sprintf("upgrade %s --values testdata/testcharts/upgradetest/values.yaml '%s'", releaseName, chartPath)
_, _, err := executeActionCommandC(store, cmd) _, _, err := executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedReli, err := store.Get(releaseName, 4) updatedReli, err := store.Get(releaseName, 4)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedRel, err := releaserToV1Release(updatedReli)
if err != nil {
t.Errorf("unexpected error, got '%v'", err)
}
if !strings.Contains(updatedRel.Manifest, "drink: beer") { updatedRel, err := releaserToV1Release(updatedReli)
t.Errorf("The value is not set correctly. manifest: %s", updatedRel.Manifest) require.NoError(t, err)
} assert.Contains(t, updatedRel.Manifest, "drink: beer", "The value is not set correctly. manifest: %s", updatedRel.Manifest)
} }
func TestUpgradeWithValuesFromStdin(t *testing.T) { func TestUpgradeWithValuesFromStdin(t *testing.T) {
@ -388,28 +343,18 @@ func TestUpgradeWithValuesFromStdin(t *testing.T) {
store.Create(relMock(releaseName, 3, ch)) store.Create(relMock(releaseName, 3, ch))
in, err := os.Open("testdata/testcharts/upgradetest/values.yaml") in, err := os.Open("testdata/testcharts/upgradetest/values.yaml")
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
cmd := fmt.Sprintf("upgrade %s --values - '%s'", releaseName, chartPath) cmd := fmt.Sprintf("upgrade %s --values - '%s'", releaseName, chartPath)
_, _, err = executeActionCommandStdinC(store, in, cmd) _, _, err = executeActionCommandStdinC(store, in, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedReli, err := store.Get(releaseName, 4) updatedReli, err := store.Get(releaseName, 4)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedRel, err := releaserToV1Release(updatedReli)
if err != nil {
t.Errorf("unexpected error, got '%v'", err)
}
if !strings.Contains(updatedRel.Manifest, "drink: beer") { updatedRel, err := releaserToV1Release(updatedReli)
t.Errorf("The value is not set correctly. manifest: %s", updatedRel.Manifest) require.NoError(t, err)
} assert.Contains(t, updatedRel.Manifest, "drink: beer", "The value is not set correctly. manifest: %s", updatedRel.Manifest)
} }
func TestUpgradeInstallWithValuesFromStdin(t *testing.T) { func TestUpgradeInstallWithValuesFromStdin(t *testing.T) {
@ -421,37 +366,25 @@ func TestUpgradeInstallWithValuesFromStdin(t *testing.T) {
store := storageFixture() store := storageFixture()
in, err := os.Open("testdata/testcharts/upgradetest/values.yaml") in, err := os.Open("testdata/testcharts/upgradetest/values.yaml")
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
cmd := fmt.Sprintf("upgrade %s -f - --install '%s'", releaseName, chartPath) cmd := fmt.Sprintf("upgrade %s -f - --install '%s'", releaseName, chartPath)
_, _, err = executeActionCommandStdinC(store, in, cmd) _, _, err = executeActionCommandStdinC(store, in, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedReli, err := store.Get(releaseName, 1) updatedReli, err := store.Get(releaseName, 1)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedRel, err := releaserToV1Release(updatedReli)
if err != nil {
t.Errorf("unexpected error, got '%v'", err)
}
if !strings.Contains(updatedRel.Manifest, "drink: beer") { updatedRel, err := releaserToV1Release(updatedReli)
t.Errorf("The value is not set correctly. manifest: %s", updatedRel.Manifest) require.NoError(t, err)
} assert.Contains(t, updatedRel.Manifest, "drink: beer", "The value is not set correctly. manifest: %s", updatedRel.Manifest)
} }
func prepareMockRelease(t *testing.T, releaseName string) (func(n string, v int, ch *chart.Chart) *release.Release, *chart.Chart, string) { func prepareMockRelease(t *testing.T, releaseName string) (func(n string, v int, ch *chart.Chart) *release.Release, *chart.Chart, string) {
t.Helper() t.Helper()
tmpChart := t.TempDir() tmpChart := t.TempDir()
configmapData, err := os.ReadFile("testdata/testcharts/upgradetest/templates/configmap.yaml") configmapData, err := os.ReadFile("testdata/testcharts/upgradetest/templates/configmap.yaml")
if err != nil { require.NoError(t, err, "Error loading template yaml")
t.Fatalf("Error loading template yaml %v", err)
}
cfile := &chart.Chart{ cfile := &chart.Chart{
Metadata: &chart.Metadata{ Metadata: &chart.Metadata{
APIVersion: chart.APIVersionV1, APIVersion: chart.APIVersionV1,
@ -462,13 +395,9 @@ func prepareMockRelease(t *testing.T, releaseName string) (func(n string, v int,
Templates: []*common.File{{Name: "templates/configmap.yaml", ModTime: time.Now(), Data: configmapData}}, Templates: []*common.File{{Name: "templates/configmap.yaml", ModTime: time.Now(), Data: configmapData}},
} }
chartPath := filepath.Join(tmpChart, cfile.Metadata.Name) chartPath := filepath.Join(tmpChart, cfile.Metadata.Name)
if err := chartutil.SaveDir(cfile, tmpChart); err != nil { require.NoErrorf(t, chartutil.SaveDir(cfile, tmpChart), "Error creating chart for upgrade")
t.Fatalf("Error creating chart for upgrade: %v", err)
}
ch, err := loader.Load(chartPath) ch, err := loader.Load(chartPath)
if err != nil { require.NoError(t, err, "Error loading chart")
t.Fatalf("Error loading chart: %v", err)
}
_ = release.Mock(&release.MockReleaseOptions{ _ = release.Mock(&release.MockReleaseOptions{
Name: releaseName, Name: releaseName,
Chart: ch, Chart: ch,
@ -535,35 +464,23 @@ func TestUpgradeInstallWithLabels(t *testing.T) {
} }
cmd := fmt.Sprintf("upgrade %s --install --labels key1=val1,key2=val2 '%s'", releaseName, chartPath) cmd := fmt.Sprintf("upgrade %s --install --labels key1=val1,key2=val2 '%s'", releaseName, chartPath)
_, _, err := executeActionCommandC(store, cmd) _, _, err := executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedReli, err := store.Get(releaseName, 1) updatedReli, err := store.Get(releaseName, 1)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
updatedRel, err := releaserToV1Release(updatedReli)
if err != nil {
t.Errorf("unexpected error, got '%v'", err)
}
if !reflect.DeepEqual(updatedRel.Labels, expectedLabels) { updatedRel, err := releaserToV1Release(updatedReli)
t.Errorf("Expected {%v}, got {%v}", expectedLabels, updatedRel.Labels) require.NoError(t, err)
} assert.Truef(t, reflect.DeepEqual(updatedRel.Labels, expectedLabels), "Expected {%v}, got {%v}", expectedLabels, updatedRel.Labels)
} }
func prepareMockReleaseWithSecret(t *testing.T, releaseName string) (func(n string, v int, ch *chart.Chart) *release.Release, *chart.Chart, string) { func prepareMockReleaseWithSecret(t *testing.T, releaseName string) (func(n string, v int, ch *chart.Chart) *release.Release, *chart.Chart, string) {
t.Helper() t.Helper()
tmpChart := t.TempDir() tmpChart := t.TempDir()
configmapData, err := os.ReadFile("testdata/testcharts/chart-with-secret/templates/configmap.yaml") configmapData, err := os.ReadFile("testdata/testcharts/chart-with-secret/templates/configmap.yaml")
if err != nil { require.NoError(t, err, "Error loading template yaml")
t.Fatalf("Error loading template yaml %v", err)
}
secretData, err := os.ReadFile("testdata/testcharts/chart-with-secret/templates/secret.yaml") secretData, err := os.ReadFile("testdata/testcharts/chart-with-secret/templates/secret.yaml")
if err != nil { require.NoError(t, err, "Error loading template yaml")
t.Fatalf("Error loading template yaml %v", err)
}
modTime := time.Now() modTime := time.Now()
cfile := &chart.Chart{ cfile := &chart.Chart{
Metadata: &chart.Metadata{ Metadata: &chart.Metadata{
@ -575,13 +492,9 @@ func prepareMockReleaseWithSecret(t *testing.T, releaseName string) (func(n stri
Templates: []*common.File{{Name: "templates/configmap.yaml", ModTime: modTime, Data: configmapData}, {Name: "templates/secret.yaml", ModTime: modTime, Data: secretData}}, Templates: []*common.File{{Name: "templates/configmap.yaml", ModTime: modTime, Data: configmapData}, {Name: "templates/secret.yaml", ModTime: modTime, Data: secretData}},
} }
chartPath := filepath.Join(tmpChart, cfile.Metadata.Name) chartPath := filepath.Join(tmpChart, cfile.Metadata.Name)
if err := chartutil.SaveDir(cfile, tmpChart); err != nil { require.NoErrorf(t, chartutil.SaveDir(cfile, tmpChart), "Error creating chart for upgrade")
t.Fatalf("Error creating chart for upgrade: %v", err)
}
ch, err := loader.Load(chartPath) ch, err := loader.Load(chartPath)
if err != nil { require.NoError(t, err, "Error loading chart")
t.Fatalf("Error loading chart: %v", err)
}
_ = release.Mock(&release.MockReleaseOptions{ _ = release.Mock(&release.MockReleaseOptions{
Name: releaseName, Name: releaseName,
Chart: ch, Chart: ch,
@ -606,54 +519,34 @@ func TestUpgradeWithDryRun(t *testing.T) {
// have it available. // have it available.
cmd := fmt.Sprintf("upgrade %s --install '%s'", releaseName, chartPath) cmd := fmt.Sprintf("upgrade %s --install '%s'", releaseName, chartPath)
_, _, err := executeActionCommandC(store, cmd) _, _, err := executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
_, err = store.Get(releaseName, 1) _, err = store.Get(releaseName, 1)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
cmd = fmt.Sprintf("upgrade %s --dry-run '%s'", releaseName, chartPath) cmd = fmt.Sprintf("upgrade %s --dry-run '%s'", releaseName, chartPath)
_, out, err := executeActionCommandC(store, cmd) _, out, err := executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
// No second release should be stored because this is a dry run. // No second release should be stored because this is a dry run.
_, err = store.Get(releaseName, 2) _, err = store.Get(releaseName, 2)
if err == nil { require.Error(t, err, "expected error as there should be no new release but got none")
t.Error("expected error as there should be no new release but got none") assert.Contains(t, out, "kind: Secret", "expected secret in output from --dry-run but found none")
}
if !strings.Contains(out, "kind: Secret") {
t.Error("expected secret in output from --dry-run but found none")
}
// Ensure the secret is not in the output // Ensure the secret is not in the output
cmd = fmt.Sprintf("upgrade %s --dry-run --hide-secret '%s'", releaseName, chartPath) cmd = fmt.Sprintf("upgrade %s --dry-run --hide-secret '%s'", releaseName, chartPath)
_, out, err = executeActionCommandC(store, cmd) _, out, err = executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Errorf("unexpected error, got '%v'", err)
}
// No second release should be stored because this is a dry run. // No second release should be stored because this is a dry run.
_, err = store.Get(releaseName, 2) _, err = store.Get(releaseName, 2)
if err == nil { require.Error(t, err, "expected error as there should be no new release but got none")
t.Error("expected error as there should be no new release but got none") assert.NotContains(t, out, "kind: Secret", "expected no secret in output from --dry-run --hide-secret but found one")
}
if strings.Contains(out, "kind: Secret") {
t.Error("expected no secret in output from --dry-run --hide-secret but found one")
}
// Ensure there is an error when --hide-secret used without dry-run // Ensure there is an error when --hide-secret used without dry-run
cmd = fmt.Sprintf("upgrade %s --hide-secret '%s'", releaseName, chartPath) cmd = fmt.Sprintf("upgrade %s --hide-secret '%s'", releaseName, chartPath)
_, _, err = executeActionCommandC(store, cmd) _, _, err = executeActionCommandC(store, cmd)
if err == nil { assert.Error(t, err, "expected error when --hide-secret used without --dry-run")
t.Error("expected error when --hide-secret used without --dry-run")
}
} }
func TestUpgradeInstallServerSideApply(t *testing.T) { func TestUpgradeInstallServerSideApply(t *testing.T) {
@ -690,23 +583,14 @@ func TestUpgradeInstallServerSideApply(t *testing.T) {
cmd := fmt.Sprintf("upgrade %s --install %s '%s'", releaseName, tt.serverSideFlag, chartPath) cmd := fmt.Sprintf("upgrade %s --install %s '%s'", releaseName, tt.serverSideFlag, chartPath)
_, _, err := executeActionCommandC(store, cmd) _, _, err := executeActionCommandC(store, cmd)
if err != nil { require.NoError(t, err)
t.Fatalf("unexpected error: %v", err)
}
rel, err := store.Get(releaseName, 1) rel, err := store.Get(releaseName, 1)
if err != nil { require.NoError(t, err, "unexpected error getting release")
t.Fatalf("unexpected error getting release: %v", err)
}
relV1, err := releaserToV1Release(rel) relV1, err := releaserToV1Release(rel)
if err != nil { require.NoError(t, err, "unexpected error converting release")
t.Fatalf("unexpected error converting release: %v", err) assert.Equal(t, tt.expectedApplyMethod, relV1.ApplyMethod, "expected ApplyMethod %q, got %q", tt.expectedApplyMethod, relV1.ApplyMethod)
}
if relV1.ApplyMethod != tt.expectedApplyMethod {
t.Errorf("expected ApplyMethod %q, got %q", tt.expectedApplyMethod, relV1.ApplyMethod)
}
}) })
} }
} }

Loading…
Cancel
Save