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 <matthieu.morel35@gmail.com>
pull/32342/head
Matthieu MOREL 6 days ago
parent 68977ec0b5
commit f280d9c1b5

@ -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 '{'")
}
}

@ -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)
}
}

@ -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)
}
}

@ -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 <CHARTNAME> 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("<CHARTNAME>")) {
t.Errorf("File %s contains <CHARTNAME>", 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) {

@ -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())
}
}
}

@ -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)
})
}
}

@ -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)
}

Loading…
Cancel
Save