fix(dependencies): Change early exit condition to accommodate charts with sub dependencies

Signed-off-by: Sam McKendrick <sam.macca9@gmail.com>
pull/7887/head
Sam McKendrick 4 years ago
parent c0edc586c5
commit a119a280ae
No known key found for this signature in database
GPG Key ID: 9C040456A97ECE25

@ -116,7 +116,7 @@ func getAliasDependency(charts []*chart.Chart, dep *chart.Dependency) *chart.Cha
// processDependencyEnabled removes disabled charts from dependencies
func processDependencyEnabled(c *chart.Chart, v map[string]interface{}, path string) error {
if c.Metadata.Dependencies == nil {
if c.Metadata.Dependencies == nil && len(c.Dependencies()) == 0 {
return nil
}

@ -269,6 +269,63 @@ func TestProcessDependencyImportValuesForEnabledCharts(t *testing.T) {
}
}
func TestProcessDependencyEnabledRespectsChildConditionsWhenParentLacksDependenciesBlock(t *testing.T) {
c := loadChart(t, "testdata/respect-conditions-without-dependencies-block/parent-chart")
if err := processDependencyImportValues(c); err != nil {
t.Fatalf("processing import values dependencies %v", err)
}
if len(c.Dependencies()) != 1 {
t.Fatalf("expected 1 dependency for this chart, but got %d", len(c.Dependencies()))
}
if len(c.Metadata.Dependencies) != 0 {
t.Fatalf("expected 0 dependencies specified in parent chart's Chart.yaml, got %d", len(c.Metadata.Dependencies))
}
if len(c.Dependencies()[0].Dependencies()) != 3 {
t.Fatalf("expected 3 dependencies for the subchart, but got %d", len(c.Dependencies()))
}
if len(c.Dependencies()[0].Metadata.Dependencies) != 3 {
t.Fatalf("expected 3 dependencies specified in subchart's Chart.yaml, got %d", len(c.Dependencies()[0].Metadata.Dependencies))
}
if err := processDependencyEnabled(c, c.Values, ""); err != nil {
t.Fatalf("expected no errors but got %q", err)
}
if len(c.Dependencies()) != 1 {
t.Fatalf("expected 1 dependency for this chart, but got %d", len(c.Dependencies()))
}
if len(c.Dependencies()[0].Dependencies()) != 2 {
t.Fatalf("expected 2 dependencies for this chart, but got %d", len(c.Dependencies()[0].Dependencies()))
}
if len(c.Metadata.Dependencies) != 0 {
t.Fatalf("expected 0 dependencies specified in Chart.yaml, got %d", len(c.Metadata.Dependencies))
}
if len(c.Dependencies()[0].Metadata.Dependencies) != 2 {
t.Fatalf("expected 2 dependencies specified in subchart's Chart.yaml, got %d", len(c.Dependencies()[0].Metadata.Dependencies))
}
subChartDependencyChart0Name := c.Dependencies()[0].Dependencies()[0].Name()
subChartDependencyChart1Name := c.Dependencies()[0].Dependencies()[1].Name()
devChartName := "dev"
prodChartName := "prod"
if subChartDependencyChart0Name != devChartName {
t.Fatalf("subchart's dependency chart name should be %s but got %s", devChartName, subChartDependencyChart1Name)
}
if subChartDependencyChart1Name != prodChartName {
t.Fatalf("subchart's dependency chart name should be %s but got %s", prodChartName, subChartDependencyChart1Name)
}
}
func TestGetAliasDependency(t *testing.T) {
c := loadChart(t, "testdata/frobnitz")
req := c.Metadata.Dependencies

@ -0,0 +1,4 @@
apiVersion: v2
name: parent-chart
version: v0.1.0
appVersion: v0.1.0

@ -0,0 +1,17 @@
apiVersion: v2
name: daughter-chart
version: v0.1.0
appVersion: v0.1.0
dependencies:
- name: dev
repository: "file://charts/dev"
version: ">= 0.0.1"
condition: global.dev.enabled,dev.enabled
- name: staging
repository: "file://charts/staging"
version: ">= 0.0.1"
condition: staging.enabled,global.staging.enabled
- name: prod
repository: "file://charts/prod"
version: ">= 0.0.1"
condition: global.prod.enabled,prod.enabled

@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Secret
metadata:
name: dev-test
stringData:
key: value

@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Secret
metadata:
name: prod-test
stringData:
key: value

@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Secret
metadata:
name: staging-test
stringData:
key: value

@ -0,0 +1,7 @@
# Default values for daughter-chart.
dev:
enabled: false
staging:
enabled: false
prod:
enabled: true

@ -0,0 +1,6 @@
# Default values for parent-chart.
global:
dev:
enabled: true
staging:
enabled: true
Loading…
Cancel
Save