chore(pkg): refactor: convert tests to testify assert/require part 10

#### Description

refactor: convert tests to testify assert/require in pkg
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
This commit is contained in:
Matthieu MOREL
2026-07-20 20:50:55 +02:00
parent 3f1f55c4c8
commit 2f5a33fb77
2 changed files with 134 additions and 263 deletions

View File

@@ -22,6 +22,9 @@ import (
"slices"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
chartv3 "helm.sh/helm/v4/internal/chart/v3"
chartutilv3 "helm.sh/helm/v4/internal/chart/v3/util"
"helm.sh/helm/v4/internal/gates"
@@ -39,38 +42,25 @@ func TestCreateCmd(t *testing.T) {
cname := "testchart"
// Run a create
if _, _, err := executeActionCommand("create " + cname); err != nil {
t.Fatalf("Failed to run create: %s", err)
}
_, _, err := executeActionCommand("create " + cname)
require.NoErrorf(t, err, "Failed to run create")
// Test that the chart is there
if fi, err := os.Stat(cname); err != nil {
t.Fatalf("no chart directory: %s", err)
} else if !fi.IsDir() {
t.Fatal("chart is not directory")
}
fi, err := os.Stat(cname)
require.NoErrorf(t, err, "no chart directory")
require.Truef(t, fi.IsDir(), "chart is not directory")
c, err := chartloader.LoadDir(cname)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
acc, err := chart.NewAccessor(c)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
if acc.Name() != cname {
t.Errorf("Expected %q name, got %q", cname, acc.Name())
}
assert.Equal(t, cname, acc.Name(), "Expected %q name, got %q", cname, acc.Name())
metadata := acc.MetadataAsMap()
apiVersion, ok := metadata["APIVersion"].(string)
if !ok {
t.Fatal("APIVersion not found in metadata")
}
if apiVersion != chartv2.APIVersionV2 {
t.Errorf("Wrong API version: %q", apiVersion)
}
require.True(t, ok, "APIVersion not found in metadata")
assert.Equal(t, chartv2.APIVersionV2, apiVersion, "Wrong API version: %q", apiVersion)
}
func TestCreateStarterCmd(t *testing.T) {
@@ -123,15 +113,11 @@ func TestCreateStarterCmd(t *testing.T) {
} else {
dest, err = chartutil.Create("starterchart", starterchart)
}
if err != nil {
t.Fatalf("Could not create chart: %s", err)
}
require.NoError(t, err, "Could not create chart")
t.Logf("Created %s", dest)
tplpath := filepath.Join(starterchart, "starterchart", "templates", "foo.tpl")
if err := os.WriteFile(tplpath, []byte("test"), 0o644); err != nil {
t.Fatalf("Could not write template: %s", err)
}
require.NoErrorf(t, os.WriteFile(tplpath, []byte("test"), 0o644), "Could not write template")
// Build the command
starterArg := "starterchart"
@@ -147,51 +133,36 @@ func TestCreateStarterCmd(t *testing.T) {
cmd += " " + cname
// Run create
if _, _, err := executeActionCommand(cmd); err != nil {
t.Fatalf("Failed to run create: %s", err)
}
_, _, err = executeActionCommand(cmd)
require.NoErrorf(t, err, "Failed to run create")
// Test that the chart is there
if fi, err := os.Stat(cname); err != nil {
t.Fatalf("no chart directory: %s", err)
} else if !fi.IsDir() {
t.Fatal("chart is not directory")
}
fi, err := os.Stat(cname)
require.NoErrorf(t, err, "no chart directory")
require.Truef(t, fi.IsDir(), "chart is not directory")
// Load and verify the chart
c, err := chartloader.LoadDir(cname)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
acc, err := chart.NewAccessor(c)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
chartName := acc.Name()
metadata := acc.MetadataAsMap()
apiVersion, ok := metadata["APIVersion"].(string)
if !ok {
t.Fatal("APIVersion not found in metadata")
}
require.True(t, ok, "APIVersion not found in metadata")
var templates []string
for _, tpl := range acc.Templates() {
templates = append(templates, tpl.Name)
}
if chartName != cname {
t.Errorf("Expected %q name, got %q", cname, chartName)
}
if apiVersion != tt.expectedVersion {
t.Errorf("Wrong API version: expected %q, got %q", tt.expectedVersion, apiVersion)
}
assert.Equal(t, cname, chartName, "Expected %q name, got %q", cname, chartName)
assert.Equal(t, tt.expectedVersion, apiVersion, "Wrong API version: expected %q, got %q", tt.expectedVersion, apiVersion)
// Verify custom template exists
found := slices.Contains(templates, "templates/foo.tpl")
if !found {
t.Error("Did not find foo.tpl")
}
assert.True(t, found, "Did not find foo.tpl")
})
}
}
@@ -207,38 +178,25 @@ func TestCreateCmdChartAPIVersionV2(t *testing.T) {
cname := "testchart"
// Run a create with explicit v2
if _, _, err := executeActionCommand("create --chart-api-version=v2 " + cname); err != nil {
t.Fatalf("Failed to run create: %s", err)
}
_, _, err := executeActionCommand("create --chart-api-version=v2 " + cname)
require.NoErrorf(t, err, "Failed to run create")
// Test that the chart is there
if fi, err := os.Stat(cname); err != nil {
t.Fatalf("no chart directory: %s", err)
} else if !fi.IsDir() {
t.Fatal("chart is not directory")
}
fi, err := os.Stat(cname)
require.NoErrorf(t, err, "no chart directory")
require.Truef(t, fi.IsDir(), "chart is not directory")
c, err := chartloader.LoadDir(cname)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
acc, err := chart.NewAccessor(c)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
if acc.Name() != cname {
t.Errorf("Expected %q name, got %q", cname, acc.Name())
}
assert.Equal(t, cname, acc.Name(), "Expected %q name, got %q", cname, acc.Name())
metadata := acc.MetadataAsMap()
apiVersion, ok := metadata["APIVersion"].(string)
if !ok {
t.Fatal("APIVersion not found in metadata")
}
if apiVersion != chartv2.APIVersionV2 {
t.Errorf("Wrong API version: expected %q, got %q", chartv2.APIVersionV2, apiVersion)
}
require.True(t, ok, "APIVersion not found in metadata")
assert.Equal(t, chartv2.APIVersionV2, apiVersion, "Wrong API version: expected %q, got %q", chartv2.APIVersionV2, apiVersion)
}
func TestCreateCmdChartAPIVersionV3(t *testing.T) {
@@ -248,38 +206,25 @@ func TestCreateCmdChartAPIVersionV3(t *testing.T) {
cname := "testchart"
// Run a create with v3
if _, _, err := executeActionCommand("create --chart-api-version=v3 " + cname); err != nil {
t.Fatalf("Failed to run create: %s", err)
}
_, _, err := executeActionCommand("create --chart-api-version=v3 " + cname)
require.NoErrorf(t, err, "Failed to run create")
// Test that the chart is there
if fi, err := os.Stat(cname); err != nil {
t.Fatalf("no chart directory: %s", err)
} else if !fi.IsDir() {
t.Fatal("chart is not directory")
}
fi, err := os.Stat(cname)
require.NoErrorf(t, err, "no chart directory")
require.Truef(t, fi.IsDir(), "chart is not directory")
c, err := chartloader.LoadDir(cname)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
acc, err := chart.NewAccessor(c)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
if acc.Name() != cname {
t.Errorf("Expected %q name, got %q", cname, acc.Name())
}
assert.Equal(t, cname, acc.Name(), "Expected %q name, got %q", cname, acc.Name())
metadata := acc.MetadataAsMap()
apiVersion, ok := metadata["APIVersion"].(string)
if !ok {
t.Fatal("APIVersion not found in metadata")
}
if apiVersion != chartv3.APIVersionV3 {
t.Errorf("Wrong API version: expected %q, got %q", chartv3.APIVersionV3, apiVersion)
}
require.True(t, ok, "APIVersion not found in metadata")
assert.Equal(t, chartv3.APIVersionV3, apiVersion, "Wrong API version: expected %q, got %q", chartv3.APIVersionV3, apiVersion)
}
func TestCreateCmdInvalidChartAPIVersion(t *testing.T) {
@@ -289,12 +234,8 @@ func TestCreateCmdInvalidChartAPIVersion(t *testing.T) {
// Run a create with invalid version
_, _, err := executeActionCommand("create --chart-api-version=v1 " + cname)
if err == nil {
t.Fatal("Expected error for invalid API version, got nil")
}
require.Error(t, err, "Expected error for invalid API version, got nil")
expectedErr := "unsupported chart API version: v1 (supported: v2, v3)"
if err.Error() != expectedErr {
t.Errorf("Expected error %q, got %q", expectedErr, err.Error())
}
assert.EqualError(t, err, expectedErr, "Expected error %q, got %q", expectedErr, err.Error())
}

View File

@@ -19,11 +19,11 @@ package storage
import (
"context"
"errors"
"fmt"
"log/slog"
"reflect"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"helm.sh/helm/v4/pkg/release"
@@ -42,16 +42,14 @@ func TestStorageCreate(t *testing.T) {
Version: 1,
}.ToRelease()
assertErrNil(t.Fatal, storage.Create(rls), "StoreRelease")
require.NoError(t, storage.Create(rls), "StoreRelease")
// fetch the release
res, err := storage.Get(rls.Name, rls.Version)
assertErrNil(t.Fatal, err, "QueryRelease")
require.NoError(t, err, "QueryRelease")
// verify the fetched and created release are the same
if !reflect.DeepEqual(rls, res) {
t.Fatalf("Expected %v, got %v", rls, res)
}
require.Truef(t, reflect.DeepEqual(rls, res), "Expected %v, got %v", rls, res)
}
func TestStorageUpdate(t *testing.T) {
@@ -65,20 +63,18 @@ func TestStorageUpdate(t *testing.T) {
Status: common.StatusDeployed,
}.ToRelease()
assertErrNil(t.Fatal, storage.Create(rls), "StoreRelease")
require.NoError(t, storage.Create(rls), "StoreRelease")
// modify the release
rls.Info.Status = common.StatusUninstalled
assertErrNil(t.Fatal, storage.Update(rls), "UpdateRelease")
require.NoError(t, storage.Update(rls), "UpdateRelease")
// retrieve the updated release
res, err := storage.Get(rls.Name, rls.Version)
assertErrNil(t.Fatal, err, "QueryRelease")
require.NoError(t, err, "QueryRelease")
// verify updated and fetched releases are the same.
if !reflect.DeepEqual(rls, res) {
t.Fatalf("Expected %v, got %v", rls, res)
}
require.Truef(t, reflect.DeepEqual(rls, res), "Expected %v, got %v", rls, res)
}
func TestStorageDelete(t *testing.T) {
@@ -95,34 +91,26 @@ func TestStorageDelete(t *testing.T) {
Version: 2,
}.ToRelease()
assertErrNil(t.Fatal, storage.Create(rls), "StoreRelease")
assertErrNil(t.Fatal, storage.Create(rls2), "StoreRelease")
require.NoError(t, storage.Create(rls), "StoreRelease")
require.NoError(t, storage.Create(rls2), "StoreRelease")
// delete the release
res, err := storage.Delete(rls.Name, rls.Version)
assertErrNil(t.Fatal, err, "DeleteRelease")
require.NoError(t, err, "DeleteRelease")
// verify updated and fetched releases are the same.
if !reflect.DeepEqual(rls, res) {
t.Fatalf("Expected %v, got %v", rls, res)
}
require.Truef(t, reflect.DeepEqual(rls, res), "Expected %v, got %v", rls, res)
hist, err := storage.History(rls.Name)
if err != nil {
t.Errorf("unexpected error: %s", err)
}
require.NoError(t, err)
rhist, err := releaseListToV1List(hist)
require.NoError(t, err)
// We have now deleted one of the two records.
if len(rhist) != 1 {
t.Errorf("expected 1 record for deleted release version, got %d", len(hist))
}
assert.Len(t, rhist, 1, "expected 1 record for deleted release version, got %d", len(hist))
if rhist[0].Version != 2 {
t.Errorf("Expected version to be 2, got %d", rhist[0].Version)
}
assert.Equal(t, 2, rhist[0].Version, "Expected version to be 2, got %d", rhist[0].Version)
}
func TestStorageList(t *testing.T) {
@@ -141,13 +129,13 @@ func TestStorageList(t *testing.T) {
rls6 := ReleaseTestData{Name: "happy-liger", Status: common.StatusUninstalled}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Create(rls0), "Storing release 'rls0'")
assertErrNil(t.Fatal, storage.Create(rls1), "Storing release 'rls1'")
assertErrNil(t.Fatal, storage.Create(rls2), "Storing release 'rls2'")
assertErrNil(t.Fatal, storage.Create(rls3), "Storing release 'rls3'")
assertErrNil(t.Fatal, storage.Create(rls4), "Storing release 'rls4'")
assertErrNil(t.Fatal, storage.Create(rls5), "Storing release 'rls5'")
assertErrNil(t.Fatal, storage.Create(rls6), "Storing release 'rls6'")
require.NoError(t, storage.Create(rls0), "Storing release 'rls0'")
require.NoError(t, storage.Create(rls1), "Storing release 'rls1'")
require.NoError(t, storage.Create(rls2), "Storing release 'rls2'")
require.NoError(t, storage.Create(rls3), "Storing release 'rls3'")
require.NoError(t, storage.Create(rls4), "Storing release 'rls4'")
require.NoError(t, storage.Create(rls5), "Storing release 'rls5'")
require.NoError(t, storage.Create(rls6), "Storing release 'rls6'")
}
var listTests = []struct {
@@ -164,14 +152,9 @@ func TestStorageList(t *testing.T) {
for _, tt := range listTests {
list, err := tt.ListFunc()
assertErrNil(t.Fatal, err, tt.Description)
require.NoError(t, err, tt.Description)
// verify the count of releases returned
if len(list) != tt.NumExpected {
t.Errorf("ListReleases(%s): expected %d, actual %d",
tt.Description,
tt.NumExpected,
len(list))
}
assert.Len(t, list, tt.NumExpected, "ListReleases(%s): expected %d, actual %d", tt.Description, tt.NumExpected, len(list))
}
}
@@ -190,32 +173,24 @@ func TestStorageDeployed(t *testing.T) {
rls3 := ReleaseTestData{Name: name, Version: 4, Status: common.StatusDeployed}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
assertErrNil(t.Fatal, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
assertErrNil(t.Fatal, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
assertErrNil(t.Fatal, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
require.NoError(t, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
require.NoError(t, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
require.NoError(t, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
require.NoError(t, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
}
setup()
rls, err := storage.Last(name)
if err != nil {
t.Fatalf("Failed to query for deployed release: %s\n", err)
}
require.NoError(t, err, "Failed to query for deployed release")
rel, err := releaserToV1Release(rls)
require.NoError(t, err)
switch {
case rls == nil:
t.Fatal("Release is nil")
case rel.Name != name:
t.Fatalf("Expected release name %q, actual %q\n", name, rel.Name)
case rel.Version != vers:
t.Fatalf("Expected release version %d, actual %d\n", vers, rel.Version)
case rel.Info.Status != common.StatusDeployed:
t.Fatalf("Expected release status 'DEPLOYED', actual %s\n", rel.Info.Status.String())
}
require.NotNil(t, rls, "Release is nil")
require.Equal(t, name, rel.Name, "Expected release name %q, actual %q\n", name, rel.Name)
require.Equal(t, vers, rel.Version, "Expected release version %d, actual %d\n", vers, rel.Version)
require.Equal(t, common.StatusDeployed, rel.Info.Status, "Expected release status 'DEPLOYED', actual %s\n", rel.Info.Status.String())
}
func TestStorageDeployedWithCorruption(t *testing.T) {
@@ -233,32 +208,24 @@ func TestStorageDeployedWithCorruption(t *testing.T) {
rls3 := ReleaseTestData{Name: name, Version: 2, Status: common.StatusDeployed}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
assertErrNil(t.Fatal, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
assertErrNil(t.Fatal, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
assertErrNil(t.Fatal, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
require.NoError(t, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
require.NoError(t, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
require.NoError(t, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
require.NoError(t, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
}
setup()
rls, err := storage.Deployed(name)
if err != nil {
t.Fatalf("Failed to query for deployed release: %s\n", err)
}
require.NoError(t, err, "Failed to query for deployed release")
rel, err := releaserToV1Release(rls)
require.NoError(t, err)
switch {
case rls == nil:
t.Fatal("Release is nil")
case rel.Name != name:
t.Fatalf("Expected release name %q, actual %q\n", name, rel.Name)
case rel.Version != vers:
t.Fatalf("Expected release version %d, actual %d\n", vers, rel.Version)
case rel.Info.Status != common.StatusDeployed:
t.Fatalf("Expected release status 'DEPLOYED', actual %s\n", rel.Info.Status.String())
}
require.NotNil(t, rls, "Release is nil")
require.Equal(t, name, rel.Name, "Expected release name %q, actual %q\n", name, rel.Name)
require.Equal(t, vers, rel.Version, "Expected release version %d, actual %d\n", vers, rel.Version)
require.Equal(t, common.StatusDeployed, rel.Info.Status, "Expected release status 'DEPLOYED', actual %s\n", rel.Info.Status.String())
}
func TestStorageHistory(t *testing.T) {
@@ -275,21 +242,17 @@ func TestStorageHistory(t *testing.T) {
rls3 := ReleaseTestData{Name: name, Version: 4, Status: common.StatusDeployed}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
assertErrNil(t.Fatal, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
assertErrNil(t.Fatal, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
assertErrNil(t.Fatal, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
require.NoError(t, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
require.NoError(t, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
require.NoError(t, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
require.NoError(t, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
}
setup()
h, err := storage.History(name)
if err != nil {
t.Fatalf("Failed to query for release history (%q): %s\n", name, err)
}
if len(h) != 4 {
t.Fatalf("Release history (%q) is empty\n", name)
}
require.NoError(t, err, "Failed to query for release history (%q)", name)
require.Len(t, h, 4, "Release history (%q) is empty\n", name)
}
var errMaxHistoryMockDriverSomethingHappened = errors.New("something happened")
@@ -336,16 +299,14 @@ func TestMaxHistoryErrorHandling(t *testing.T) {
rls1 := ReleaseTestData{Name: name, Version: 1, Status: common.StatusSuperseded}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Driver.Create(makeKey(rls1.Name, rls1.Version), rls1), "Storing release 'angry-bird' (v1)")
require.NoError(t, storage.Driver.Create(makeKey(rls1.Name, rls1.Version), rls1), "Storing release 'angry-bird' (v1)")
}
setup()
rls2 := ReleaseTestData{Name: name, Version: 2, Status: common.StatusSuperseded}.ToRelease()
wantErr := errMaxHistoryMockDriverSomethingHappened
gotErr := storage.Create(rls2)
if !errors.Is(gotErr, wantErr) {
t.Fatalf("Storing release 'angry-bird' (v2) should return the error %#v, but returned %#v", wantErr, gotErr)
}
require.ErrorIs(t, gotErr, wantErr, "Storing release 'angry-bird' (v2) should return the error %#v, but returned %#v", wantErr, gotErr)
}
func TestStorageRemoveLeastRecent(t *testing.T) {
@@ -365,27 +326,25 @@ func TestStorageRemoveLeastRecent(t *testing.T) {
rls3 := ReleaseTestData{Name: name, Version: 4, Status: common.StatusDeployed}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
assertErrNil(t.Fatal, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
assertErrNil(t.Fatal, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
assertErrNil(t.Fatal, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
require.NoError(t, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
require.NoError(t, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
require.NoError(t, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
require.NoError(t, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
}
setup()
// Because we have not set a limit, we expect 4.
expect := 4
if hist, err := storage.History(name); err != nil {
t.Fatal(err)
} else if len(hist) != expect {
t.Fatalf("expected %d items in history, got %d", expect, len(hist))
}
hist, err := storage.History(name)
require.NoError(t, err)
require.Equal(t, len(hist), expect, "expected %d items in history, got %d", expect, len(hist))
storage.MaxHistory = 3
rls5 := ReleaseTestData{Name: name, Version: 5, Status: common.StatusDeployed}.ToRelease()
assertErrNil(t.Fatal, storage.Create(rls5), "Storing release 'angry-bird' (v5)")
require.NoError(t, storage.Create(rls5), "Storing release 'angry-bird' (v5)")
// On inserting the 5th record, we expect two records to be pruned from history.
hist, err := storage.History(name)
hist, err = storage.History(name)
require.NoError(t, err)
rhist, err := releaseListToV1List(hist)
require.NoError(t, err)
@@ -399,9 +358,8 @@ func TestStorageRemoveLeastRecent(t *testing.T) {
// We expect the existing records to be 3, 4, and 5.
for i, item := range rhist {
v := item.Version
if expect := i + 3; v != expect {
t.Errorf("Expected release %d, got %d", expect, v)
}
expect := i + 3
assert.Equalf(t, v, expect, "Expected release %d, got %d", expect, v)
}
}
@@ -420,22 +378,21 @@ func TestStorageDoNotDeleteDeployed(t *testing.T) {
rls3 := ReleaseTestData{Name: name, Version: 4, Status: common.StatusFailed}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
assertErrNil(t.Fatal, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
assertErrNil(t.Fatal, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
assertErrNil(t.Fatal, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
require.NoError(t, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
require.NoError(t, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
require.NoError(t, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
require.NoError(t, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
}
setup()
rls5 := ReleaseTestData{Name: name, Version: 5, Status: common.StatusFailed}.ToRelease()
assertErrNil(t.Fatal, storage.Create(rls5), "Storing release 'angry-bird' (v5)")
require.NoError(t, storage.Create(rls5), "Storing release 'angry-bird' (v5)")
// On inserting the 5th record, we expect a total of 3 releases, but we expect version 2
// (the only deployed release), to still exist
hist, err := storage.History(name)
if err != nil {
t.Fatal(err)
} else if len(hist) != storage.MaxHistory {
require.NoError(t, err)
if len(hist) != storage.MaxHistory {
rhist, err := releaseListToV1List(hist)
require.NoError(t, err)
for _, item := range rhist {
@@ -453,9 +410,7 @@ func TestStorageDoNotDeleteDeployed(t *testing.T) {
rhist, err := releaseListToV1List(hist)
require.NoError(t, err)
for _, item := range rhist {
if !expectedVersions[item.Version] {
t.Errorf("Release version %d, found when not expected", item.Version)
}
assert.Truef(t, expectedVersions[item.Version], "Release version %d, found when not expected", item.Version)
}
}
@@ -473,25 +428,21 @@ func TestStorageLast(t *testing.T) {
rls3 := ReleaseTestData{Name: name, Version: 4, Status: common.StatusFailed}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
assertErrNil(t.Fatal, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
assertErrNil(t.Fatal, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
assertErrNil(t.Fatal, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
require.NoError(t, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
require.NoError(t, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
require.NoError(t, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
require.NoError(t, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
}
setup()
h, err := storage.Last(name)
if err != nil {
t.Fatalf("Failed to query for release history (%q): %s\n", name, err)
}
require.NoError(t, err, "Failed to query for release history (%q)", name)
rel, err := releaserToV1Release(h)
require.NoError(t, err)
if rel.Version != 4 {
t.Errorf("Expected revision 4, got %d", rel.Version)
}
assert.Equal(t, 4, rel.Version, "Expected revision 4, got %d", rel.Version)
}
// TestUpgradeInitiallyFailedReleaseWithHistoryLimit tests a case when there are no deployed release yet, but history limit has been
@@ -511,47 +462,34 @@ func TestUpgradeInitiallyFailedReleaseWithHistoryLimit(t *testing.T) {
rls3 := ReleaseTestData{Name: name, Version: 4, Status: common.StatusFailed}.ToRelease()
// create the release records in the storage
assertErrNil(t.Fatal, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
assertErrNil(t.Fatal, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
assertErrNil(t.Fatal, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
assertErrNil(t.Fatal, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
require.NoError(t, storage.Create(rls0), "Storing release 'angry-bird' (v1)")
require.NoError(t, storage.Create(rls1), "Storing release 'angry-bird' (v2)")
require.NoError(t, storage.Create(rls2), "Storing release 'angry-bird' (v3)")
require.NoError(t, storage.Create(rls3), "Storing release 'angry-bird' (v4)")
hist, err := storage.History(name)
if err != nil {
t.Fatalf("unexpected error: %s", err)
}
require.NoError(t, err)
wantHistoryLen := 4
if len(hist) != wantHistoryLen {
t.Fatalf("expected history of release %q to contain %d releases, got %d", name, wantHistoryLen, len(hist))
}
require.Len(t, hist, wantHistoryLen, "expected history of release %q to contain %d releases, got %d", name, wantHistoryLen, len(hist))
}
setup()
rls5 := ReleaseTestData{Name: name, Version: 5, Status: common.StatusFailed}.ToRelease()
err := storage.Create(rls5)
if err != nil {
t.Fatalf("Failed to create a new release version: %s", err)
}
require.NoError(t, storage.Create(rls5), "Failed to create a new release version")
hist, err := storage.History(name)
if err != nil {
t.Fatalf("unexpected error: %s", err)
}
require.NoError(t, err)
rhist, err := releaseListToV1List(hist)
require.NoError(t, err)
for i, rel := range rhist {
wantVersion := i + 2
if rel.Version != wantVersion {
t.Fatalf("Expected history release %d version to equal %d, got %d", i+1, wantVersion, rel.Version)
}
require.Equal(t, wantVersion, rel.Version, "Expected history release %d version to equal %d, got %d", i+1, wantVersion, rel.Version)
wantStatus := common.StatusFailed
if rel.Info.Status != wantStatus {
t.Fatalf("Expected history release %d status to equal %q, got %q", i+1, wantStatus, rel.Info.Status)
}
require.Equal(t, wantStatus, rel.Info.Status, "Expected history release %d status to equal %q, got %q", i+1, wantStatus, rel.Info.Status)
}
}
@@ -573,21 +511,13 @@ func (test ReleaseTestData) ToRelease() *rspb.Release {
}
}
func assertErrNil(eh func(args ...any), err error, message string) {
if err != nil {
eh(fmt.Sprintf("%s: %q", message, err))
}
}
func TestStorageGetsLoggerFromDriver(t *testing.T) {
d := driver.NewMemory()
l := &mockSLogHandler{}
d.SetLogger(l)
s := Init(d)
_, _ = s.Get("doesnt-matter", 123)
if !l.Called {
t.Fatal("Expected storage to use driver's logger, but it did not")
}
require.True(t, l.Called, "Expected storage to use driver's logger, but it did not")
}
type mockSLogHandler struct {