mirror of
https://github.com/helm/helm.git
synced 2026-04-15 21:59:50 -04:00
This is a refactor of the loader to use in-memory buffers instead of trying to optimize for memory usage by delaying reads until the last possible moment. Since charts tend to stay well below 1M in size, this makes more sense, and is easier to work with.
88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
package chartutil
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/kubernetes/helm/pkg/proto/hapi/chart"
|
|
)
|
|
|
|
func TestLoadDir(t *testing.T) {
|
|
c, err := Load("testdata/frobnitz")
|
|
if err != nil {
|
|
t.Fatalf("Failed to load testdata: %s", err)
|
|
}
|
|
verifyFrobnitz(t, c)
|
|
verifyChart(t, c)
|
|
}
|
|
|
|
func TestLoadFile(t *testing.T) {
|
|
c, err := Load("testdata/frobnitz-1.2.3.tgz")
|
|
if err != nil {
|
|
t.Fatalf("Failed to load testdata: %s", err)
|
|
}
|
|
verifyFrobnitz(t, c)
|
|
verifyChart(t, c)
|
|
}
|
|
|
|
func verifyChart(t *testing.T, c *chart.Chart) {
|
|
if c.Metadata.Name == "" {
|
|
t.Fatalf("No chart metadata found on %v", c)
|
|
}
|
|
t.Logf("Verifying chart %s", c.Metadata.Name)
|
|
if len(c.Templates) != 1 {
|
|
t.Errorf("Expected 1 template, got %d", len(c.Templates))
|
|
}
|
|
|
|
if len(c.Files) != 5 {
|
|
t.Errorf("Expected 5 extra files, got %d", len(c.Files))
|
|
for _, n := range c.Files {
|
|
t.Logf("\t%s", n.TypeUrl)
|
|
}
|
|
}
|
|
|
|
if len(c.Dependencies) != 2 {
|
|
t.Errorf("Expected 2 dependencies, got %d (%v)", len(c.Dependencies), c.Dependencies)
|
|
for _, d := range c.Dependencies {
|
|
t.Logf("\tSubchart: %s\n", d.Metadata.Name)
|
|
}
|
|
}
|
|
|
|
expect := map[string]map[string]string{
|
|
"alpine": {
|
|
"version": "0.1.0",
|
|
},
|
|
"mariner": {
|
|
"version": "4.3.2",
|
|
},
|
|
}
|
|
|
|
for _, dep := range c.Dependencies {
|
|
if dep.Metadata == nil {
|
|
t.Fatalf("expected metadata on dependency: %v", dep)
|
|
}
|
|
exp, ok := expect[dep.Metadata.Name]
|
|
if !ok {
|
|
t.Fatalf("Unknown dependency %s", dep.Metadata.Name)
|
|
}
|
|
if exp["version"] != dep.Metadata.Version {
|
|
t.Errorf("Expected %s version %s, got %s", dep.Metadata.Name, exp["version"], dep.Metadata.Version)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
func verifyFrobnitz(t *testing.T, c *chart.Chart) {
|
|
verifyChartfile(t, c.Metadata)
|
|
|
|
if len(c.Templates) != 1 {
|
|
t.Fatalf("Expected 1 template, got %d", len(c.Templates))
|
|
}
|
|
|
|
if c.Templates[0].Name != "templates/template.tpl" {
|
|
t.Errorf("Unexpected template: %s", c.Templates[0].Name)
|
|
}
|
|
|
|
if len(c.Templates[0].Data) == 0 {
|
|
t.Error("No template data.")
|
|
}
|
|
}
|