fix(helm): add test case to double confirm index.

If invalid helm chart shows up as the last element
in metadata entries, it will not be excluded from
the filtered results.

Reproduces #12744

Signed-off-by: Geoffrey Chen <ziqianggeoffreychen@gmail.com>
pull/12760/head
Geoffrey Chen 2 years ago
parent e81f6140dd
commit 63b687cb17

@ -61,6 +61,87 @@ entries:
home: https://github.com/something home: https://github.com/something
digest: "sha256:1234567890abcdef" digest: "sha256:1234567890abcdef"
` `
indexWithDuplicateDependencies = `
apiVersion: v1
entries:
leading-duplicate-dependency:
- apiVersion: v2
name: leading-duplicate-dependency
appVersion: 1.0.1
version: 1.0.1+34
description: high version with duplicate dependency, low version normal
dependencies:
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
- apiVersion: v2
name: leading-duplicate-dependency
appVersion: 1.0.0
version: 1.0.0+23
description: high version with duplicate dependency, low version normal
dependencies:
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
trailing-duplicate-dependency:
- apiVersion: v2
name: trailing-duplicate-dependency
appVersion: 1.0.1
version: 1.0.1+34
description: low version with duplicate dependency, high version normal
dependencies:
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
- apiVersion: v2
name: trailing-duplicate-dependency
appVersion: 1.0.0
version: 1.0.0+23
description: low version with duplicate dependency, high version normal
dependencies:
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
mid-duplicate-dependency:
- apiVersion: v2
name: mid-duplicate-dependency
appVersion: 1.0.2
version: 1.0.2+56
description: mid version with duplicate dependency, high/low version normal
dependencies:
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
- apiVersion: v2
name: mid-duplicate-dependency
appVersion: 1.0.1
version: 1.0.1+34
description: mid version with duplicate dependency, high/low version normal
dependencies:
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
- apiVersion: v2
name: mid-duplicate-dependency
appVersion: 1.0.0
version: 1.0.0+23
description: mid version with duplicate dependency, high/low version normal
dependencies:
- name: bar
repository: https://foo.bar.com/artifactory/proj-foo-bar
version: 1.2.3+123
`
indexWithEmptyEntry = ` indexWithEmptyEntry = `
apiVersion: v1 apiVersion: v1
entries: entries:
@ -173,6 +254,27 @@ func TestLoadIndex_Duplicates(t *testing.T) {
} }
} }
func TestLoadIndex_DuplicateDependencies(t *testing.T) {
i, err := loadIndex([]byte(indexWithDuplicateDependencies), "indexWithDuplicateDependencies")
if err != nil {
t.Errorf("Unexpected error: Duplicate dependencies should not fail loadIndex() but we got %s.", err)
}
validationErrors := 0
testCharts := []string{"leading-duplicate-dependency", "trailing-duplicate-dependency", "mid-duplicate-dependency"}
for _, name := range testCharts {
cvs := i.Entries[name]
for idx := len(cvs) - 1; idx >= 0; idx-- {
if err := cvs[idx].Validate(); err != nil {
t.Logf("Unexpected error: Invalid helm chart with duplicate dependencies is not excluded yet [%q %q: %s].", name, cvs[idx].Version, err)
validationErrors++
}
}
}
if validationErrors != 0 {
t.Errorf("Unexpected error: Invalid helm charts with duplicate dependencies are not fully excluded: %v invalid helm charts.", validationErrors)
}
}
func TestLoadIndex_EmptyEntry(t *testing.T) { func TestLoadIndex_EmptyEntry(t *testing.T) {
if _, err := loadIndex([]byte(indexWithEmptyEntry), "indexWithEmptyEntry"); err != nil { if _, err := loadIndex([]byte(indexWithEmptyEntry), "indexWithEmptyEntry"); err != nil {
t.Errorf("unexpected error: %s", err) t.Errorf("unexpected error: %s", err)

Loading…
Cancel
Save