Merge pull request #5177 from adshmh/5150-lint-development-version-flag

Allow lint command to parse pre-release charts
This commit is contained in:
Taylor Thomas 2019-10-04 17:57:31 -06:00 committed by GitHub
commit 4e8063b103
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 65 additions and 31 deletions

View File

@ -156,12 +156,15 @@ func lintChart(path string, vals []byte, namespace string, strict bool) (support
return linter, err
}
lastHyphenIndex := strings.LastIndex(filepath.Base(path), "-")
if lastHyphenIndex <= 0 {
return linter, fmt.Errorf("unable to parse chart archive %q, missing '-'", filepath.Base(path))
files, err := ioutil.ReadDir(tempDir)
if err != nil {
return linter, fmt.Errorf("unable to read temporary output directory %s", tempDir)
}
base := filepath.Base(path)[:lastHyphenIndex]
chartPath = filepath.Join(tempDir, base)
if !files[0].IsDir() {
return linter, fmt.Errorf("unexpected file %s in temporary output directory %s", files[0].Name(), tempDir)
}
chartPath = filepath.Join(tempDir, files[0].Name())
} else {
chartPath = path
}

View File

@ -20,35 +20,53 @@ import (
"testing"
)
var (
values = []byte{}
namespace = "testNamespace"
strict = false
archivedChartPath = "testdata/testcharts/compressedchart-0.1.0.tgz"
archivedChartPathWithHyphens = "testdata/testcharts/compressedchart-with-hyphens-0.1.0.tgz"
invalidArchivedChartPath = "testdata/testcharts/invalidcompressedchart0.1.0.tgz"
chartDirPath = "testdata/testcharts/decompressedchart/"
chartMissingManifest = "testdata/testcharts/chart-missing-manifest"
)
func TestLintChart(t *testing.T) {
if _, err := lintChart(chartDirPath, values, namespace, strict); err != nil {
t.Errorf("%s", err)
tests := []struct {
name string
chartPath string
err bool
}{
{
name: "decompressed-chart",
chartPath: "testdata/testcharts/decompressedchart/",
},
{
name: "archived-chart-path",
chartPath: "testdata/testcharts/compressedchart-0.1.0.tgz",
},
{
name: "archived-chart-path-with-hyphens",
chartPath: "testdata/testcharts/compressedchart-with-hyphens-0.1.0.tgz",
},
{
name: "pre-release-chart",
chartPath: "testdata/testcharts/pre-release-chart-0.1.0-alpha.tgz",
},
{
name: "invalid-archived-chart-path",
chartPath: "testdata/testcharts/invalidcompressedchart0.1.0.tgz",
err: true,
},
{
name: "chart-missing-manifest",
chartPath: "testdata/testcharts/chart-missing-manifest",
err: true,
},
}
if _, err := lintChart(archivedChartPath, values, namespace, strict); err != nil {
t.Errorf("%s", err)
}
values := []byte{}
namespace := "testNamespace"
strict := false
if _, err := lintChart(archivedChartPathWithHyphens, values, namespace, strict); err != nil {
t.Errorf("%s", err)
}
if _, err := lintChart(invalidArchivedChartPath, values, namespace, strict); err == nil {
t.Errorf("Expected a chart parsing error")
}
if _, err := lintChart(chartMissingManifest, values, namespace, strict); err == nil {
t.Errorf("Expected a chart parsing error")
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
_, err := lintChart(tt.chartPath, values, namespace, strict)
switch {
case err != nil && !tt.err:
t.Errorf("%s", err)
case err == nil && tt.err:
t.Errorf("Expected a chart parsing error")
}
})
}
}

Binary file not shown.

View File

@ -39,6 +39,19 @@ func TestExpand(t *testing.T) {
t.Fatal(err)
}
files, err := ioutil.ReadDir(dest)
if err != nil {
t.Fatalf("error reading output directory %s: %s", dest, err)
}
if len(files) != 1 {
t.Fatalf("expected a single chart directory in output directory %s", dest)
}
if !files[0].IsDir() {
t.Fatalf("expected a chart directory in output directory %s", dest)
}
expectedChartPath := filepath.Join(dest, "frobnitz")
fi, err := os.Stat(expectedChartPath)
if err != nil {