From f280d9c1b5da4e2f25cac76b2fcce58bad35aae9 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Fri, 10 Jul 2026 00:24:50 +0200 Subject: [PATCH] chore(internal): refactor: convert tests to testify assert/require part 2 refactor: convert tests to testify assert/require in internal/chart/v3/util Signed-off-by: Matthieu MOREL --- internal/chart/v3/lint/lint_test.go | 43 +++------- internal/chart/v3/lint/rules/template_test.go | 85 +++++++----------- internal/chart/v3/util/chartfile_test.go | 59 ++++--------- internal/chart/v3/util/create_test.go | 39 +++------ internal/chart/v3/util/expand_test.go | 56 +++--------- internal/chart/v3/util/save_test.go | 86 ++++++------------- internal/plugin/subprocess_commands_test.go | 71 +++++---------- 7 files changed, 129 insertions(+), 310 deletions(-) diff --git a/internal/chart/v3/lint/lint_test.go b/internal/chart/v3/lint/lint_test.go index 6a2558fe0..8916c6e22 100644 --- a/internal/chart/v3/lint/lint_test.go +++ b/internal/chart/v3/lint/lint_test.go @@ -92,35 +92,23 @@ func TestBadChartV3(t *testing.T) { func TestInvalidYaml(t *testing.T) { var values map[string]any m := RunAll(badYamlFileDir, values, namespace).Messages - if len(m) != 1 { - t.Fatalf("All didn't fail with expected errors, got %#v", m) - } - if !strings.Contains(m[0].Err.Error(), "deliberateSyntaxError") { - t.Error("All didn't have the error for deliberateSyntaxError") - } + require.Len(t, m, 1, "All didn't fail with expected errors, got %#v", m) + assert.ErrorContains(t, m[0].Err, "deliberateSyntaxError", "All didn't have the error for deliberateSyntaxError") } func TestInvalidChartYamlV3(t *testing.T) { var values map[string]any m := RunAll(invalidChartFileDir, values, namespace).Messages t.Log(m) - if len(m) != 3 { - t.Fatalf("All didn't fail with expected errors, got %#v", m) - } - if !strings.Contains(m[0].Err.Error(), "failed to strictly parse chart metadata file") { - t.Error("All didn't have the error for duplicate YAML keys") - } + require.Len(t, m, 3, "All didn't fail with expected errors, got %#v", m) + assert.ErrorContains(t, m[0].Err, "failed to strictly parse chart metadata file", "All didn't have the error for duplicate YAML keys") } func TestBadValuesV3(t *testing.T) { var values map[string]any m := RunAll(badValuesFileDir, values, namespace).Messages - if len(m) < 1 { - t.Fatalf("All didn't fail with expected errors, got %#v", m) - } - if !strings.Contains(m[0].Err.Error(), "unable to parse YAML") { - t.Errorf("All didn't have the error for invalid key format: %s", m[0].Err) - } + require.NotEmptyf(t, m, "All didn't fail with expected errors") + assert.ErrorContains(t, m[0].Err, "unable to parse YAML", "All didn't have the error for invalid key format: %s", m[0].Err) } func TestBadCrdFileV3(t *testing.T) { @@ -150,11 +138,7 @@ func TestHelmCreateChart(t *testing.T) { dir := t.TempDir() createdChart, err := chartutil.Create("testhelmcreatepasseslint", dir) - if err != nil { - t.Error(err) - // Fatal is bad because of the defer. - return - } + require.NoError(t, err) // Note: we test with strict=true here, even though others have // strict = false. @@ -178,10 +162,7 @@ func TestHelmCreateChart(t *testing.T) { // of the `--set` flag. func TestHelmCreateChart_CheckDeprecatedWarnings(t *testing.T) { createdChart, err := chartutil.Create("checkdeprecatedwarnings", t.TempDir()) - if err != nil { - t.Error(err) - return - } + require.NoError(t, err) // Add values to enable hpa, and ingress which are disabled by default. // This is the equivalent of: @@ -234,11 +215,7 @@ func TestMalformedTemplate(t *testing.T) { case <-c: t.Fatal("lint malformed template timeout") case <-ch: - if len(m) != 1 { - t.Fatalf("All didn't fail with expected errors, got %#v", m) - } - if !strings.Contains(m[0].Err.Error(), "invalid character '{'") { - t.Error("All didn't have the error for invalid character '{'") - } + require.Len(t, m, 1, "All didn't fail with expected errors, got %#v", m) + assert.ErrorContains(t, m[0].Err, "invalid character '{'", "All didn't have the error for invalid character '{'") } } diff --git a/internal/chart/v3/lint/rules/template_test.go b/internal/chart/v3/lint/rules/template_test.go index 88343b330..0b83e1cd5 100644 --- a/internal/chart/v3/lint/rules/template_test.go +++ b/internal/chart/v3/lint/rules/template_test.go @@ -20,10 +20,12 @@ import ( "fmt" "os" "path/filepath" - "strings" "testing" "time" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + chart "helm.sh/helm/v4/internal/chart/v3" "helm.sh/helm/v4/internal/chart/v3/lint/support" chartutil "helm.sh/helm/v4/internal/chart/v3/util" @@ -36,16 +38,12 @@ func TestValidateAllowedExtension(t *testing.T) { var failTest = []string{"/foo", "/test.toml"} for _, test := range failTest { err := validateAllowedExtension(test) - if err == nil || !strings.Contains(err.Error(), "Valid extensions are .yaml, .yml, .tpl, or .txt") { - t.Errorf("validateAllowedExtension('%s') to return \"Valid extensions are .yaml, .yml, .tpl, or .txt\", got no error", test) - } + require.ErrorContains(t, err, "Valid extensions are .yaml, .yml, .tpl, or .txt", "validateAllowedExtension('%s') to return \"Valid extensions are .yaml, .yml, .tpl, or .txt\", got no error", test) } var successTest = []string{"/foo.yaml", "foo.yaml", "foo.tpl", "/foo/bar/baz.yaml", "NOTES.txt"} for _, test := range successTest { err := validateAllowedExtension(test) - if err != nil { - t.Errorf("validateAllowedExtension('%s') to return no error but got \"%s\"", test, err.Error()) - } + assert.NoError(t, err, "validateAllowedExtension('%s') to return no error", test) } } @@ -59,13 +57,9 @@ func TestTemplateParsing(t *testing.T) { Templates(&linter, values, namespace, strict) res := linter.Messages - if len(res) != 1 { - t.Fatalf("Expected one error, got %d, %v", len(res), res) - } + require.Len(t, res, 1, "Expected one error, got %d, %v", len(res), res) - if !strings.Contains(res[0].Err.Error(), "deliberateSyntaxError") { - t.Errorf("Unexpected error: %s", res[0]) - } + assert.ErrorContains(t, res[0].Err, "deliberateSyntaxError", "Unexpected error: %s", res[0]) } var wrongTemplatePath = filepath.Join(templateTestBasedir, "templates", "fail.yaml") @@ -82,9 +76,7 @@ func TestTemplateIntegrationHappyPath(t *testing.T) { Templates(&linter, values, namespace, strict) res := linter.Messages - if len(res) != 0 { - t.Fatalf("Expected no error, got %d, %v", len(res), res) - } + require.Empty(t, res, "Expected no error, got %d, %v", len(res), res) } func TestMultiTemplateFail(t *testing.T) { @@ -92,13 +84,9 @@ func TestMultiTemplateFail(t *testing.T) { Templates(&linter, values, namespace, strict) res := linter.Messages - if len(res) != 1 { - t.Fatalf("Expected 1 error, got %d, %v", len(res), res) - } + require.Len(t, res, 1, "Expected 1 error, got %d, %v", len(res), res) - if !strings.Contains(res[0].Err.Error(), "object name does not conform to Kubernetes naming requirements") { - t.Errorf("Unexpected error: %s", res[0].Err) - } + assert.ErrorContains(t, res[0].Err, "object name does not conform to Kubernetes naming requirements", "Unexpected error: %s", res[0].Err) } func TestValidateMetadataName(t *testing.T) { @@ -176,8 +164,11 @@ func TestValidateMetadataName(t *testing.T) { } for _, tt := range tests { t.Run(fmt.Sprintf("%s/%s", tt.obj.Kind, tt.obj.Metadata.Name), func(t *testing.T) { - if err := validateMetadataName(tt.obj); (err != nil) != tt.wantErr { - t.Errorf("validateMetadataName() error = %v, wantErr %v", err, tt.wantErr) + err := validateMetadataName(tt.obj) + if tt.wantErr { + require.Error(t, err, "validateMetadataName()") + } else { + require.NoError(t, err, "validateMetadataName()") } }) } @@ -207,9 +198,7 @@ func TestDeprecatedAPIFails(t *testing.T) { } tmpdir := t.TempDir() - if err := chartutil.SaveDir(&mychart, tmpdir); err != nil { - t.Fatal(err) - } + require.NoError(t, chartutil.SaveDir(&mychart, tmpdir)) linter := support.Linter{ChartDir: filepath.Join(tmpdir, mychart.Name())} Templates(&linter, values, namespace, strict) @@ -220,10 +209,9 @@ func TestDeprecatedAPIFails(t *testing.T) { t.Fatalf("Expected 1 lint error, got %d", l) } - err := linter.Messages[0].Err.(deprecatedAPIError) - if err.Deprecated != "apps/v1beta1 Deployment" { - t.Errorf("Surprised to learn that %q is deprecated", err.Deprecated) - } + var err deprecatedAPIError + require.ErrorAs(t, linter.Messages[0].Err, &err, "Expected error to be of type deprecatedAPIError") + assert.Equal(t, "apps/v1beta1 Deployment", err.Deprecated, "Surprised to learn that %q is deprecated", err.Deprecated) } const manifest = `apiVersion: v1 @@ -262,9 +250,7 @@ func TestStrictTemplateParsingMapError(t *testing.T) { }, } dir := t.TempDir() - if err := chartutil.SaveDir(&ch, dir); err != nil { - t.Fatal(err) - } + require.NoError(t, chartutil.SaveDir(&ch, dir)) linter := &support.Linter{ ChartDir: filepath.Join(dir, ch.Metadata.Name), } @@ -306,9 +292,8 @@ spec: - name: nginx image: nginx:1.14.2 ` - if err := validateMatchSelector(md, manifest); err != nil { - t.Error(err) - } + err := validateMatchSelector(md, manifest) + require.NoError(t, err) manifest = ` apiVersion: apps/v1 kind: Deployment @@ -330,9 +315,8 @@ spec: - name: nginx image: nginx:1.14.2 ` - if err := validateMatchSelector(md, manifest); err != nil { - t.Error(err) - } + err = validateMatchSelector(md, manifest) + require.NoError(t, err) manifest = ` apiVersion: apps/v1 kind: Deployment @@ -351,9 +335,8 @@ spec: - name: nginx image: nginx:1.14.2 ` - if err := validateMatchSelector(md, manifest); err == nil { - t.Error("expected Deployment with no selector to fail") - } + err = validateMatchSelector(md, manifest) + assert.Error(t, err, "expected Deployment with no selector to fail") } func TestValidateTopIndentLevel(t *testing.T) { @@ -392,9 +375,7 @@ func TestEmptyWithCommentsManifests(t *testing.T) { } tmpdir := t.TempDir() - if err := chartutil.SaveDir(&mychart, tmpdir); err != nil { - t.Fatal(err) - } + require.NoError(t, chartutil.SaveDir(&mychart, tmpdir)) linter := support.Linter{ChartDir: filepath.Join(tmpdir, mychart.Name())} Templates(&linter, values, namespace, strict) @@ -424,9 +405,7 @@ items: helm.sh/resource-policy: keep ` - if err := validateListAnnotations(md, manifest); err == nil { - t.Fatal("expected list with nested keep annotations to fail") - } + require.Error(t, validateListAnnotations(md, manifest), "expected list with nested keep annotations to fail") manifest = ` apiVersion: v1 @@ -439,9 +418,7 @@ items: kind: ConfigMap ` - if err := validateListAnnotations(md, manifest); err != nil { - t.Fatalf("List objects keep annotations should pass. got: %s", err) - } + require.NoError(t, validateListAnnotations(md, manifest), "List objects keep annotations should pass") } func TestIsYamlFileExtension(t *testing.T) { @@ -457,8 +434,6 @@ func TestIsYamlFileExtension(t *testing.T) { for _, test := range tests { result := isYamlFileExtension(test.filename) - if result != test.expected { - t.Errorf("isYamlFileExtension(%s) = %v; want %v", test.filename, result, test.expected) - } + assert.Equal(t, test.expected, result, "isYamlFileExtension(%s) = %v; want %v", test.filename, result, test.expected) } } diff --git a/internal/chart/v3/util/chartfile_test.go b/internal/chart/v3/util/chartfile_test.go index 65cb27923..c791930c1 100644 --- a/internal/chart/v3/util/chartfile_test.go +++ b/internal/chart/v3/util/chartfile_test.go @@ -19,6 +19,9 @@ package util import ( "testing" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + chart "helm.sh/helm/v4/internal/chart/v3" ) @@ -35,57 +38,31 @@ func TestLoadChartfile(t *testing.T) { func verifyChartfile(t *testing.T, f *chart.Metadata, name string) { t.Helper() - if f == nil { - t.Fatal("Failed verifyChartfile because f is nil") - } + require.NotNil(t, f, "Failed verifyChartfile because f is nil") - if f.Name != name { - t.Errorf("Expected %s, got %s", name, f.Name) - } + assert.Equal(t, name, f.Name, "Expected %s, got %s", name, f.Name) - if f.Description != "This is a frobnitz." { - t.Errorf("Unexpected description %q", f.Description) - } + assert.Equal(t, "This is a frobnitz.", f.Description, "Unexpected description %q", f.Description) - if f.Version != "1.2.3" { - t.Errorf("Unexpected version %q", f.Version) - } + assert.Equal(t, "1.2.3", f.Version, "Unexpected version %q", f.Version) - if len(f.Maintainers) != 2 { - t.Errorf("Expected 2 maintainers, got %d", len(f.Maintainers)) - } + assert.Len(t, f.Maintainers, 2, "Expected 2 maintainers, got %d", len(f.Maintainers)) - if f.Maintainers[0].Name != "The Helm Team" { - t.Error("Unexpected maintainer name.") - } + assert.Equal(t, "The Helm Team", f.Maintainers[0].Name, "Unexpected maintainer name.") - if f.Maintainers[1].Email != "nobody@example.com" { - t.Error("Unexpected maintainer email.") - } + assert.Equal(t, "nobody@example.com", f.Maintainers[1].Email, "Unexpected maintainer email.") - if len(f.Sources) != 1 { - t.Fatal("Unexpected number of sources") - } + require.Len(t, f.Sources, 1, "Unexpected number of sources") - if f.Sources[0] != "https://example.com/foo/bar" { - t.Errorf("Expected https://example.com/foo/bar, got %s", f.Sources) - } + assert.Equal(t, "https://example.com/foo/bar", f.Sources[0], "Expected https://example.com/foo/bar, got %s", f.Sources) - if f.Home != "http://example.com" { - t.Error("Unexpected home.") - } + assert.Equal(t, "http://example.com", f.Home, "Unexpected home.") - if f.Icon != "https://example.com/64x64.png" { - t.Errorf("Unexpected icon: %q", f.Icon) - } + assert.Equal(t, "https://example.com/64x64.png", f.Icon, "Unexpected icon: %q", f.Icon) - if len(f.Keywords) != 3 { - t.Error("Unexpected keywords") - } + require.Len(t, f.Keywords, 3, "Unexpected keywords") - if len(f.Annotations) != 2 { - t.Fatal("Unexpected annotations") - } + require.Len(t, f.Annotations, 2, "Unexpected annotations") if want, got := "extravalue", f.Annotations["extrakey"]; want != got { t.Errorf("Want %q, but got %q", want, got) @@ -97,9 +74,7 @@ func verifyChartfile(t *testing.T, f *chart.Metadata, name string) { kk := []string{"frobnitz", "sprocket", "dodad"} for i, k := range f.Keywords { - if kk[i] != k { - t.Errorf("Expected %q, got %q", kk[i], k) - } + assert.Equal(t, kk[i], k, "Expected %q, got %q", kk[i], k) } } diff --git a/internal/chart/v3/util/create_test.go b/internal/chart/v3/util/create_test.go index abdd52a82..d4b51eac0 100644 --- a/internal/chart/v3/util/create_test.go +++ b/internal/chart/v3/util/create_test.go @@ -22,6 +22,9 @@ import ( "path/filepath" "testing" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + chart "helm.sh/helm/v4/internal/chart/v3" "helm.sh/helm/v4/internal/chart/v3/loader" ) @@ -30,20 +33,14 @@ func TestCreate(t *testing.T) { tdir := t.TempDir() c, err := Create("foo", tdir) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) dir := filepath.Join(tdir, "foo") mychart, err := loader.LoadDir(c) - if err != nil { - t.Fatalf("Failed to load newly created chart %q: %s", c, err) - } + require.NoError(t, err, "Failed to load newly created chart %q: %s", c, err) - if mychart.Name() != "foo" { - t.Errorf("Expected name to be 'foo', got %q", mychart.Name()) - } + assert.Equal(t, "foo", mychart.Name(), "Expected name to be 'foo', got %q", mychart.Name()) for _, f := range []string{ ChartfileName, @@ -81,13 +78,9 @@ func TestCreateFrom(t *testing.T) { dir := filepath.Join(tdir, "foo") c := filepath.Join(tdir, cf.Name) mychart, err := loader.LoadDir(c) - if err != nil { - t.Fatalf("Failed to load newly created chart %q: %s", c, err) - } + require.NoError(t, err, "Failed to load newly created chart %q: %s", c, err) - if mychart.Name() != "foo" { - t.Errorf("Expected name to be 'foo', got %q", mychart.Name()) - } + assert.Equal(t, "foo", mychart.Name(), "Expected name to be 'foo', got %q", mychart.Name()) for _, f := range []string{ ChartfileName, @@ -100,9 +93,7 @@ func TestCreateFrom(t *testing.T) { // Check each file to make sure has been replaced b, err := os.ReadFile(filepath.Join(dir, f)) - if err != nil { - t.Errorf("Unable to read file %s: %s", f, err) - } + require.NoError(t, err, "Unable to read file %s: %s", f, err) if bytes.Contains(b, []byte("")) { t.Errorf("File %s contains ", f) } @@ -131,17 +122,11 @@ func TestCreate_Overwrite(t *testing.T) { } data, err := os.ReadFile(tplname) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) - if string(data) == "FOO" { - t.Fatal("File that should have been modified was not.") - } + require.NotEqual(t, "FOO", string(data), "File that should have been modified was not.") - if errlog.Len() == 0 { - t.Error("Expected warnings about overwriting files.") - } + assert.NotEqual(t, 0, errlog.Len(), "Expected warnings about overwriting files.") } func TestValidateChartName(t *testing.T) { diff --git a/internal/chart/v3/util/expand_test.go b/internal/chart/v3/util/expand_test.go index e9e298b81..a7a756485 100644 --- a/internal/chart/v3/util/expand_test.go +++ b/internal/chart/v3/util/expand_test.go @@ -72,9 +72,7 @@ func makeTestChartArchive(t *testing.T, chartName, sourceDir string) *bytes.Buff return nil }) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) err = tw.Close() require.NoError(t, err) @@ -88,9 +86,7 @@ func TestExpand(t *testing.T) { dest := t.TempDir() reader, err := os.Open("testdata/frobnitz-1.2.3.tgz") - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) if err := Expand(dest, reader); err != nil { t.Fatal(err) @@ -98,41 +94,29 @@ func TestExpand(t *testing.T) { expectedChartPath := filepath.Join(dest, "frobnitz") fi, err := os.Stat(expectedChartPath) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) if !fi.IsDir() { t.Fatalf("expected a chart directory at %s", expectedChartPath) } dir, err := os.Open(expectedChartPath) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) fis, err := dir.Readdir(0) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) expectLen := 11 - if len(fis) != expectLen { - t.Errorf("Expected %d files, but got %d", expectLen, len(fis)) - } + assert.Len(t, fis, expectLen, "Expected %d files, but got %d", expectLen, len(fis)) for _, fi := range fis { expect, err := os.Stat(filepath.Join("testdata", "frobnitz", fi.Name())) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) // os.Stat can return different values for directories, based on the OS // for Linux, for example, os.Stat always returns the size of the directory // (value-4096) regardless of the size of the contents of the directory mode := expect.Mode() if !mode.IsDir() { - if fi.Size() != expect.Size() { - t.Errorf("Expected %s to have size %d, got %d", fi.Name(), expect.Size(), fi.Size()) - } + assert.Equal(t, expect.Size(), fi.Size(), "Expected %s to have size %d, got %d", fi.Name(), expect.Size(), fi.Size()) } } } @@ -168,41 +152,29 @@ func TestExpandFile(t *testing.T) { expectedChartPath := filepath.Join(dest, "frobnitz") fi, err := os.Stat(expectedChartPath) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) if !fi.IsDir() { t.Fatalf("expected a chart directory at %s", expectedChartPath) } dir, err := os.Open(expectedChartPath) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) fis, err := dir.Readdir(0) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) expectLen := 11 - if len(fis) != expectLen { - t.Errorf("Expected %d files, but got %d", expectLen, len(fis)) - } + assert.Len(t, fis, expectLen, "Expected %d files, but got %d", expectLen, len(fis)) for _, fi := range fis { expect, err := os.Stat(filepath.Join("testdata", "frobnitz", fi.Name())) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) // os.Stat can return different values for directories, based on the OS // for Linux, for example, os.Stat always returns the size of the directory // (value-4096) regardless of the size of the contents of the directory mode := expect.Mode() if !mode.IsDir() { - if fi.Size() != expect.Size() { - t.Errorf("Expected %s to have size %d, got %d", fi.Name(), expect.Size(), fi.Size()) - } + assert.Equal(t, expect.Size(), fi.Size(), "Expected %s to have size %d, got %d", fi.Name(), expect.Size(), fi.Size()) } } } diff --git a/internal/chart/v3/util/save_test.go b/internal/chart/v3/util/save_test.go index cbe9b853f..e729ad3b3 100644 --- a/internal/chart/v3/util/save_test.go +++ b/internal/chart/v3/util/save_test.go @@ -32,6 +32,9 @@ import ( "testing" "time" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + chart "helm.sh/helm/v4/internal/chart/v3" "helm.sh/helm/v4/internal/chart/v3/loader" "helm.sh/helm/v4/pkg/chart/common" @@ -59,9 +62,7 @@ func TestSave(t *testing.T) { chartWithInvalidJSON := withSchema(*c, []byte("{")) where, err := Save(c, dest) - if err != nil { - t.Fatalf("Failed to save: %s", err) - } + require.NoError(t, err, "Failed to save: %s", err) if !strings.HasPrefix(where, dest) { t.Fatalf("Expected %q to start with %q", where, dest) } @@ -70,12 +71,8 @@ func TestSave(t *testing.T) { } c2, err := loader.LoadFile(where) - if err != nil { - t.Fatal(err) - } - if c2.Name() != c.Name() { - t.Fatalf("Expected chart archive to have %q, got %q", c.Name(), c2.Name()) - } + require.NoError(t, err) + require.Equal(t, c.Name(), c2.Name(), "Expected chart archive to have %q, got %q", c.Name(), c2.Name()) if len(c2.Files) != 1 || c2.Files[0].Name != "scheherazade/shahryar.txt" { t.Fatal("Files data did not match") } @@ -92,19 +89,11 @@ func TestSave(t *testing.T) { c.Metadata.APIVersion = chart.APIVersionV3 where, err = Save(c, dest) - if err != nil { - t.Fatalf("Failed to save: %s", err) - } + require.NoError(t, err, "Failed to save: %s", err) c2, err = loader.LoadFile(where) - if err != nil { - t.Fatal(err) - } - if c2.Lock == nil { - t.Fatal("Expected v3 chart archive to contain a Chart.lock file") - } - if c2.Lock.Digest != c.Lock.Digest { - t.Fatal("Chart.lock data did not match") - } + require.NoError(t, err) + require.NotNil(t, c2.Lock, "Expected v3 chart archive to contain a Chart.lock file") + require.Equal(t, c.Lock.Digest, c2.Lock.Digest, "Chart.lock data did not match") }) } @@ -122,9 +111,7 @@ func TestSave(t *testing.T) { }, } _, err := Save(c, tmp) - if err == nil { - t.Fatal("Expected error saving chart with invalid name") - } + require.Error(t, err, "Expected error saving chart with invalid name") } // Creates a copy with a different schema; does not modify anything. @@ -165,14 +152,10 @@ func TestSavePreservesTimestamps(t *testing.T) { } where, err := Save(c, tmp) - if err != nil { - t.Fatalf("Failed to save: %s", err) - } + require.NoError(t, err, "Failed to save: %s", err) allHeaders, err := retrieveAllHeadersFromTar(where) - if err != nil { - t.Fatalf("Failed to parse tar: %v", err) - } + require.NoError(t, err, "Failed to parse tar: %v", err) roundedTime := initialCreateTime.Round(time.Second) for _, header := range allHeaders { @@ -234,37 +217,26 @@ func TestSaveDir(t *testing.T) { }, } - if err := SaveDir(c, tmp); err != nil { - t.Fatalf("Failed to save: %s", err) - } + require.NoError(t, SaveDir(c, tmp), "Failed to save") c2, err := loader.LoadDir(tmp + "/ahab") - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) - if c2.Name() != c.Name() { - t.Fatalf("Expected chart archive to have %q, got %q", c.Name(), c2.Name()) - } + require.Equal(t, c.Name(), c2.Name(), "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 { - t.Fatal("Templates data did not match") - } + require.Len(t, c2.Templates, 1) + require.Equal(t, c.Templates[0].Name, c2.Templates[0].Name, "Templates data did not match") - if len(c2.Files) != 1 || c2.Files[0].Name != c.Files[0].Name { - t.Fatal("Files data did not match") - } + require.Len(t, c2.Files, 1) + require.Equal(t, c.Files[0].Name, c2.Files[0].Name, "Files data did not match") tmp2 := t.TempDir() c.Metadata.Name = "../ahab" pth := filepath.Join(tmp2, "tmpcharts") - if err := os.MkdirAll(filepath.Join(pth), 0o755); err != nil { - t.Fatal(err) - } + require.NoError(t, os.MkdirAll(filepath.Join(pth), 0o755), "Failed to create directory") - if err := SaveDir(c, pth); err.Error() != "\"../ahab\" is not a valid chart name" { - t.Fatalf("Did not get expected error for chart named %q", c.Name()) - } + err = SaveDir(c, pth) + assert.EqualError(t, err, "\"../ahab\" is not a valid chart name", "Did not get expected error for chart named %q", c.Name()) } func TestRepeatableSave(t *testing.T) { @@ -325,18 +297,12 @@ func TestRepeatableSave(t *testing.T) { // create package dest := path.Join(tmp, "newdir") where, err := Save(test.chart, dest) - if err != nil { - t.Fatalf("Failed to save: %s", err) - } + require.NoError(t, err, "Failed to save: %s", err) // get shasum for package result, err := sha256Sum(where) - if err != nil { - t.Fatalf("Failed to check shasum: %s", err) - } + require.NoError(t, err, "Failed to check shasum: %s", err) // assert that the package SHA is what we wanted. - if result != test.want { - t.Errorf("FormatName() result = %v, want %v", result, test.want) - } + assert.Equal(t, test.want, result, "FormatName() result = %v, want %v", result, test.want) }) } } diff --git a/internal/plugin/subprocess_commands_test.go b/internal/plugin/subprocess_commands_test.go index dbce42f6a..6aa0a7435 100644 --- a/internal/plugin/subprocess_commands_test.go +++ b/internal/plugin/subprocess_commands_test.go @@ -21,6 +21,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestPrepareCommand(t *testing.T) { @@ -36,12 +37,8 @@ func TestPrepareCommand(t *testing.T) { env := map[string]string{} cmd, args, err := PrepareCommands(platformCommand, true, []string{}, env) - if err != nil { - t.Fatal(err) - } - if cmd != cmdMain { - t.Fatalf("Expected %q, got %q", cmdMain, cmd) - } + require.NoError(t, err) + require.Equal(t, cmdMain, cmd, "Expected %q, got %q", cmdMain, cmd) if !reflect.DeepEqual(args, cmdArgs) { t.Fatalf("Expected %v, got %v", cmdArgs, args) } @@ -94,9 +91,7 @@ func TestPrepareCommandExtraArgs(t *testing.T) { env := map[string]string{} cmd, args, err := PrepareCommands(platformCommand, true, testExtraArgs, env) - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) assert.Equal(t, tc.expected.cmdMain, cmd, "Expected command to match") assert.Equal(t, tc.expected.args, args, "Expected args to match") }) @@ -116,12 +111,8 @@ func TestPrepareCommands(t *testing.T) { env := map[string]string{} cmd, args, err := PrepareCommands(cmds, true, []string{}, env) - if err != nil { - t.Fatal(err) - } - if cmd != cmdMain { - t.Fatalf("Expected %q, got %q", cmdMain, cmd) - } + require.NoError(t, err) + require.Equal(t, cmdMain, cmd, "Expected %q, got %q", cmdMain, cmd) if !reflect.DeepEqual(args, cmdArgs) { t.Fatalf("Expected %v, got %v", cmdArgs, args) } @@ -143,12 +134,8 @@ func TestPrepareCommandsExtraArgs(t *testing.T) { env := map[string]string{} cmd, args, err := PrepareCommands(cmds, true, extraArgs, env) - if err != nil { - t.Fatal(err) - } - if cmd != cmdMain { - t.Fatalf("Expected %q, got %q", cmdMain, cmd) - } + require.NoError(t, err) + require.Equal(t, cmdMain, cmd, "Expected %q, got %q", cmdMain, cmd) if !reflect.DeepEqual(args, expectedArgs) { t.Fatalf("Expected %v, got %v", expectedArgs, args) } @@ -166,12 +153,8 @@ func TestPrepareCommandsNoArch(t *testing.T) { env := map[string]string{} cmd, args, err := PrepareCommands(cmds, true, []string{}, env) - if err != nil { - t.Fatal(err) - } - if cmd != cmdMain { - t.Fatalf("Expected %q, got %q", cmdMain, cmd) - } + require.NoError(t, err) + require.Equal(t, cmdMain, cmd, "Expected %q, got %q", cmdMain, cmd) if !reflect.DeepEqual(args, cmdArgs) { t.Fatalf("Expected %v, got %v", cmdArgs, args) } @@ -189,12 +172,8 @@ func TestPrepareCommandsNoOsNoArch(t *testing.T) { env := map[string]string{} cmd, args, err := PrepareCommands(cmds, true, []string{}, env) - if err != nil { - t.Fatal(err) - } - if cmd != cmdMain { - t.Fatalf("Expected %q, got %q", cmdMain, cmd) - } + require.NoError(t, err) + require.Equal(t, cmdMain, cmd, "Expected %q, got %q", cmdMain, cmd) if !reflect.DeepEqual(args, cmdArgs) { t.Fatalf("Expected %v, got %v", cmdArgs, args) } @@ -208,18 +187,16 @@ func TestPrepareCommandsNoMatch(t *testing.T) { } env := map[string]string{} - if _, _, err := PrepareCommands(cmds, true, []string{}, env); err == nil { - t.Fatal("Expected error to be returned") - } + _, _, err := PrepareCommands(cmds, true, []string{}, env) + require.Error(t, err, "Expected error to be returned") } func TestPrepareCommandsNoCommands(t *testing.T) { cmds := []PlatformCommand{} env := map[string]string{} - if _, _, err := PrepareCommands(cmds, true, []string{}, env); err == nil { - t.Fatal("Expected error to be returned") - } + _, _, err := PrepareCommands(cmds, true, []string{}, env) + require.Error(t, err, "Expected error to be returned") } func TestPrepareCommandsExpand(t *testing.T) { @@ -237,12 +214,8 @@ func TestPrepareCommandsExpand(t *testing.T) { } cmd, args, err := PrepareCommands(cmds, true, []string{}, env) - if err != nil { - t.Fatal(err) - } - if cmd != cmdMain { - t.Fatalf("Expected %q, got %q", cmdMain, cmd) - } + require.NoError(t, err) + require.Equal(t, cmdMain, cmd, "Expected %q, got %q", cmdMain, cmd) if !reflect.DeepEqual(args, expectedArgs) { t.Fatalf("Expected %v, got %v", expectedArgs, args) } @@ -260,12 +233,8 @@ func TestPrepareCommandsNoExpand(t *testing.T) { } cmd, args, err := PrepareCommands(cmds, false, []string{}, env) - if err != nil { - t.Fatal(err) - } - if cmd != cmdMain { - t.Fatalf("Expected %q, got %q", cmdMain, cmd) - } + require.NoError(t, err) + require.Equal(t, cmdMain, cmd, "Expected %q, got %q", cmdMain, cmd) if !reflect.DeepEqual(args, cmdArgs) { t.Fatalf("Expected %v, got %v", cmdArgs, args) }