mirror of
https://github.com/helm/helm.git
synced 2026-04-23 15:17:05 -04:00
Merge pull request #8762 from bacongobbler/chartmuseum-index
fix: allow serverInfo field on index files
This commit is contained in:
commit
2fdd0348a2
3 changed files with 107 additions and 34 deletions
|
|
@ -77,6 +77,8 @@ func (c ChartVersions) Less(a, b int) bool {
|
|||
|
||||
// IndexFile represents the index file in a chart repository
|
||||
type IndexFile struct {
|
||||
// This is used ONLY for validation against chartmuseum's index files and is discarded after validation.
|
||||
ServerInfo map[string]interface{} `json:"serverInfo,omitempty"`
|
||||
APIVersion string `json:"apiVersion"`
|
||||
Generated time.Time `json:"generated"`
|
||||
Entries map[string]ChartVersions `json:"entries"`
|
||||
|
|
|
|||
|
|
@ -35,9 +35,31 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
testfile = "testdata/local-index.yaml"
|
||||
unorderedTestfile = "testdata/local-index-unordered.yaml"
|
||||
testRepo = "test-repo"
|
||||
testfile = "testdata/local-index.yaml"
|
||||
chartmuseumtestfile = "testdata/chartmuseum-index.yaml"
|
||||
unorderedTestfile = "testdata/local-index-unordered.yaml"
|
||||
testRepo = "test-repo"
|
||||
indexWithDuplicates = `
|
||||
apiVersion: v1
|
||||
entries:
|
||||
nginx:
|
||||
- urls:
|
||||
- https://kubernetes-charts.storage.googleapis.com/nginx-0.2.0.tgz
|
||||
name: nginx
|
||||
description: string
|
||||
version: 0.2.0
|
||||
home: https://github.com/something/else
|
||||
digest: "sha256:1234567890abcdef"
|
||||
nginx:
|
||||
- urls:
|
||||
- https://kubernetes-charts.storage.googleapis.com/alpine-1.0.0.tgz
|
||||
- http://storage2.googleapis.com/kubernetes-charts/alpine-1.0.0.tgz
|
||||
name: alpine
|
||||
description: string
|
||||
version: 1.0.0
|
||||
home: https://github.com/something
|
||||
digest: "sha256:1234567890abcdef"
|
||||
`
|
||||
)
|
||||
|
||||
func TestIndexFile(t *testing.T) {
|
||||
|
|
@ -84,38 +106,37 @@ func TestIndexFile(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestLoadIndex(t *testing.T) {
|
||||
b, err := ioutil.ReadFile(testfile)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
i, err := loadIndex(b)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
verifyLocalIndex(t, i)
|
||||
}
|
||||
|
||||
const indexWithDuplicates = `
|
||||
apiVersion: v1
|
||||
entries:
|
||||
nginx:
|
||||
- urls:
|
||||
- https://kubernetes-charts.storage.googleapis.com/nginx-0.2.0.tgz
|
||||
name: nginx
|
||||
description: string
|
||||
version: 0.2.0
|
||||
home: https://github.com/something/else
|
||||
digest: "sha256:1234567890abcdef"
|
||||
nginx:
|
||||
- urls:
|
||||
- https://kubernetes-charts.storage.googleapis.com/alpine-1.0.0.tgz
|
||||
- http://storage2.googleapis.com/kubernetes-charts/alpine-1.0.0.tgz
|
||||
name: alpine
|
||||
description: string
|
||||
version: 1.0.0
|
||||
home: https://github.com/something
|
||||
digest: "sha256:1234567890abcdef"
|
||||
`
|
||||
tests := []struct {
|
||||
Name string
|
||||
Filename string
|
||||
}{
|
||||
{
|
||||
Name: "regular index file",
|
||||
Filename: testfile,
|
||||
},
|
||||
{
|
||||
Name: "chartmuseum index file",
|
||||
Filename: chartmuseumtestfile,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
tc := tc
|
||||
t.Run(tc.Name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
b, err := ioutil.ReadFile(tc.Filename)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
i, err := loadIndex(b)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
verifyLocalIndex(t, i)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestLoadIndex_Duplicates is a regression to make sure that we don't non-deterministically allow duplicate packages.
|
||||
func TestLoadIndex_Duplicates(t *testing.T) {
|
||||
|
|
|
|||
50
pkg/repo/testdata/chartmuseum-index.yaml
vendored
Normal file
50
pkg/repo/testdata/chartmuseum-index.yaml
vendored
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
serverInfo:
|
||||
contextPath: /v1/helm
|
||||
apiVersion: v1
|
||||
entries:
|
||||
nginx:
|
||||
- urls:
|
||||
- https://kubernetes-charts.storage.googleapis.com/nginx-0.2.0.tgz
|
||||
name: nginx
|
||||
description: string
|
||||
version: 0.2.0
|
||||
home: https://github.com/something/else
|
||||
digest: "sha256:1234567890abcdef"
|
||||
keywords:
|
||||
- popular
|
||||
- web server
|
||||
- proxy
|
||||
- urls:
|
||||
- https://kubernetes-charts.storage.googleapis.com/nginx-0.1.0.tgz
|
||||
name: nginx
|
||||
description: string
|
||||
version: 0.1.0
|
||||
home: https://github.com/something
|
||||
digest: "sha256:1234567890abcdef"
|
||||
keywords:
|
||||
- popular
|
||||
- web server
|
||||
- proxy
|
||||
alpine:
|
||||
- urls:
|
||||
- https://kubernetes-charts.storage.googleapis.com/alpine-1.0.0.tgz
|
||||
- http://storage2.googleapis.com/kubernetes-charts/alpine-1.0.0.tgz
|
||||
name: alpine
|
||||
description: string
|
||||
version: 1.0.0
|
||||
home: https://github.com/something
|
||||
keywords:
|
||||
- linux
|
||||
- alpine
|
||||
- small
|
||||
- sumtin
|
||||
digest: "sha256:1234567890abcdef"
|
||||
chartWithNoURL:
|
||||
- name: chartWithNoURL
|
||||
description: string
|
||||
version: 1.0.0
|
||||
home: https://github.com/something
|
||||
keywords:
|
||||
- small
|
||||
- sumtin
|
||||
digest: "sha256:1234567890abcdef"
|
||||
Loading…
Reference in a new issue