Skip to content

Commit 419f4df

Browse files
committed
fixes issue with not filtering invalid cahrts from index #1515
1 parent 6078ea4 commit 419f4df

File tree

6 files changed

+100
-3
lines changed

6 files changed

+100
-3
lines changed

internal/helm/repository/chart_repository.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func IndexFromBytes(b []byte) (*repo.IndexFile, error) {
8787
return nil, repo.ErrNoAPIVersion
8888
}
8989

90-
for _, cvs := range i.Entries {
90+
for name, cvs := range i.Entries {
9191
for idx := len(cvs) - 1; idx >= 0; idx-- {
9292
if cvs[idx] == nil {
9393
continue
@@ -103,6 +103,8 @@ func IndexFromBytes(b []byte) (*repo.IndexFile, error) {
103103
cvs = append(cvs[:idx], cvs[idx+1:]...)
104104
}
105105
}
106+
// adjust slice to only contain a set of valid versions
107+
i.Entries[name] = cvs
106108
}
107109

108110
i.SortEntries()

internal/helm/repository/chart_repository_test.go

+19-2
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,7 @@ func verifyLocalIndex(t *testing.T, i *repo.IndexFile) {
672672
g := NewWithT(t)
673673

674674
g.Expect(i.Entries).ToNot(BeNil())
675-
g.Expect(i.Entries).To(HaveLen(3), "expected 3 entries in index file")
675+
g.Expect(i.Entries).To(HaveLen(4), "expected 4 entries in index file")
676676

677677
alpine, ok := i.Entries["alpine"]
678678
g.Expect(ok).To(BeTrue(), "expected 'alpine' entry to exist")
@@ -682,6 +682,10 @@ func verifyLocalIndex(t *testing.T, i *repo.IndexFile) {
682682
g.Expect(ok).To(BeTrue(), "expected 'nginx' entry to exist")
683683
g.Expect(nginx).To(HaveLen(2), "'nginx' should have 2 entries")
684684

685+
broken, ok := i.Entries["xChartWithBrokenDependencies"]
686+
g.Expect(ok).To(BeTrue(), "expected 'xChartWithBrokenDependencies' entry to exist")
687+
g.Expect(broken).To(HaveLen(1), "'xChartWithBrokenDependencies' should have 1 entries")
688+
685689
expects := []*repo.ChartVersion{
686690
{
687691
Metadata: &chart.Metadata{
@@ -723,8 +727,21 @@ func verifyLocalIndex(t *testing.T, i *repo.IndexFile) {
723727
},
724728
Digest: "sha256:1234567890abcdef",
725729
},
730+
{
731+
Metadata: &chart.Metadata{
732+
Name: "xChartWithBrokenDependencies",
733+
Description: "string",
734+
Version: "1.2.3",
735+
Keywords: []string{"broken", "still accepted"},
736+
Home: "https://example.com/something",
737+
},
738+
URLs: []string{
739+
"https://kubernetes-charts.storage.googleapis.com/nginx-1.2.3.tgz",
740+
},
741+
Digest: "sha256:1234567890abcdef",
742+
},
726743
}
727-
tests := []*repo.ChartVersion{alpine[0], nginx[0], nginx[1]}
744+
tests := []*repo.ChartVersion{alpine[0], nginx[0], nginx[1], broken[0]}
728745

729746
for i, tt := range tests {
730747
expect := expects[i]

internal/helm/testdata/chartmuseum-index.json

+30
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,36 @@
7777
"created": "0001-01-01T00:00:00Z",
7878
"digest": "sha256:1234567890abcdef"
7979
}
80+
],
81+
"xChartWithBrokenDependencies": [
82+
{
83+
"name": "xChartWithBrokenDependencies",
84+
"home": "https://example.com/something",
85+
"version": "1.2.3",
86+
"description": "string",
87+
"keywords": [
88+
"broken",
89+
"still accepted"
90+
],
91+
"apiVersion": "v1",
92+
"dependencies": [
93+
{
94+
"name": "kube-rbac-proxy",
95+
"version": "0.9.1",
96+
"repository": ""
97+
},
98+
{
99+
"name": "kube-rbac-proxy",
100+
"version": "0.9.1",
101+
"repository": ""
102+
}
103+
],
104+
"urls": [
105+
"https://kubernetes-charts.storage.googleapis.com/nginx-1.2.3.tgz"
106+
],
107+
"created": "0001-01-01T00:00:00Z",
108+
"digest": "sha256:1234567890abcdef"
109+
}
80110
]
81111
}
82112
}

internal/helm/testdata/chartmuseum-index.yaml

+16
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,19 @@ entries:
4848
- small
4949
- sumtin
5050
digest: "sha256:1234567890abcdef"
51+
xChartWithBrokenDependencies:
52+
- name: xChartWithBrokenDependencies
53+
description: string
54+
version: 1.2.3
55+
home: https://example.com/something
56+
keywords:
57+
- broken
58+
- still accepted
59+
urls:
60+
- https://kubernetes-charts.storage.googleapis.com/nginx-1.2.3.tgz
61+
digest: "sha256:1234567890abcdef"
62+
dependencies:
63+
- name: kube-rbac-proxy
64+
version: "0.9.1"
65+
- name: kube-rbac-proxy
66+
version: "0.9.1"

internal/helm/testdata/local-index-unordered.yaml

+16
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,19 @@ entries:
4646
- small
4747
- sumtin
4848
digest: "sha256:1234567890abcdef"
49+
xChartWithBrokenDependencies:
50+
- name: xChartWithBrokenDependencies
51+
description: string
52+
version: 1.2.3
53+
home: https://example.com/something
54+
keywords:
55+
- broken
56+
- still accepted
57+
urls:
58+
- https://kubernetes-charts.storage.googleapis.com/nginx-1.2.3.tgz
59+
digest: "sha256:1234567890abcdef"
60+
dependencies:
61+
- name: kube-rbac-proxy
62+
version: "0.9.1"
63+
- name: kube-rbac-proxy
64+
version: "0.9.1"

internal/helm/testdata/local-index.yaml

+16
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,19 @@ entries:
4646
- small
4747
- sumtin
4848
digest: "sha256:1234567890abcdef"
49+
xChartWithBrokenDependencies:
50+
- name: xChartWithBrokenDependencies
51+
description: string
52+
version: 1.2.3
53+
home: https://example.com/something
54+
keywords:
55+
- broken
56+
- still accepted
57+
urls:
58+
- https://kubernetes-charts.storage.googleapis.com/nginx-1.2.3.tgz
59+
digest: "sha256:1234567890abcdef"
60+
dependencies:
61+
- name: kube-rbac-proxy
62+
version: "0.9.1"
63+
- name: kube-rbac-proxy
64+
version: "0.9.1"

0 commit comments

Comments
 (0)