From 3721937d7421b50d3999cb8ddf4b0ebdbf2a16f3 Mon Sep 17 00:00:00 2001 From: Jonas Lergell Date: Sun, 21 Nov 2021 12:00:46 +0100 Subject: [PATCH] Add test for reproducing bug with sub sub chart and aliases Signed-off-by: Jonas Lergell --- pkg/chartutil/dependencies_test.go | 45 +++++++++++++++++++ pkg/chartutil/testdata/subsubalias/Chart.yaml | 12 +++++ .../subsubalias/charts/sub-chart/Chart.yaml | 9 ++++ .../sub-chart/charts/sub-sub-chart/Chart.yaml | 5 +++ .../charts/sub-sub-chart/templates/test.yaml | 1 + .../testdata/subsubalias/values.yaml | 6 +++ 6 files changed, 78 insertions(+) create mode 100644 pkg/chartutil/testdata/subsubalias/Chart.yaml create mode 100644 pkg/chartutil/testdata/subsubalias/charts/sub-chart/Chart.yaml create mode 100644 pkg/chartutil/testdata/subsubalias/charts/sub-chart/charts/sub-sub-chart/Chart.yaml create mode 100644 pkg/chartutil/testdata/subsubalias/charts/sub-chart/charts/sub-sub-chart/templates/test.yaml create mode 100644 pkg/chartutil/testdata/subsubalias/values.yaml diff --git a/pkg/chartutil/dependencies_test.go b/pkg/chartutil/dependencies_test.go index bcb1d40e5..2df446b7b 100644 --- a/pkg/chartutil/dependencies_test.go +++ b/pkg/chartutil/dependencies_test.go @@ -424,3 +424,48 @@ func TestDependentChartsWithSomeSubchartsSpecifiedInDependency(t *testing.T) { t.Fatalf("expected 1 dependency specified in Chart.yaml, got %d", len(c.Metadata.Dependencies)) } } + +func TestAliasOfSubSubChartWithMultipleInstances(t *testing.T) { + c := loadChart(t, "testdata/subsubalias") + + if len(c.Dependencies()) != 1 { + t.Fatalf("expected 1 dependencies for this chart, but got %d", len(c.Dependencies())) + } + + if err := processDependencyEnabled(c, c.Values, ""); err != nil { + t.Fatalf("expected no errors but got %q", err) + } + + req := c.Metadata.Dependencies + + if len(req) == 0 { + t.Fatalf("there are no dependencies to test") + } + + sub1 := c.Dependencies()[0] + sub1subReq := sub1.Metadata.Dependencies[0] + sub1subAlias := getAliasDependency(sub1.Dependencies(), sub1subReq) + if len(sub1.Dependencies()) != 1 { + t.Fatalf("expected 1 dependencies for this chart, but got %d", len(c.Dependencies())) + } + if sub1subAlias == nil { + t.Fatalf("expected sub1subAlias to not be nil") + } + if sub1subAlias.Name() != "sub-sub1" { + t.Fatalf("expected name to be sub-sub1") + } + + sub2 := c.Dependencies()[1] + sub2subReq := sub2.Metadata.Dependencies[0] + sub2subAlias := getAliasDependency(sub2.Dependencies(), sub2subReq) + if len(sub2.Dependencies()) != 1 { + t.Fatalf("expected 1 dependencies for this chart, but got %d", len(c.Dependencies())) + } + if sub2subAlias == nil { + t.Fatalf("expected sub2subAlias to not be nil") + } + if sub2subAlias.Name() != "sub-sub1" { + t.Fatalf("expected name to be sub-sub1") + } + +} diff --git a/pkg/chartutil/testdata/subsubalias/Chart.yaml b/pkg/chartutil/testdata/subsubalias/Chart.yaml new file mode 100644 index 000000000..b1523e104 --- /dev/null +++ b/pkg/chartutil/testdata/subsubalias/Chart.yaml @@ -0,0 +1,12 @@ +apiVersion: v2 +name: parent +description: parent +type: application +version: 0.0.1 +dependencies: +- name: sub-chart + version: 0.0.1 + alias: sub1 +- name: sub-chart + version: 0.0.1 + alias: sub2 diff --git a/pkg/chartutil/testdata/subsubalias/charts/sub-chart/Chart.yaml b/pkg/chartutil/testdata/subsubalias/charts/sub-chart/Chart.yaml new file mode 100644 index 000000000..951762c5a --- /dev/null +++ b/pkg/chartutil/testdata/subsubalias/charts/sub-chart/Chart.yaml @@ -0,0 +1,9 @@ +apiVersion: v2 +name: sub-chart +description: sub-chart +type: application +version: 0.0.1 +dependencies: +- name: sub-sub-chart + version: 0.0.1 + alias: sub-sub1 diff --git a/pkg/chartutil/testdata/subsubalias/charts/sub-chart/charts/sub-sub-chart/Chart.yaml b/pkg/chartutil/testdata/subsubalias/charts/sub-chart/charts/sub-sub-chart/Chart.yaml new file mode 100644 index 000000000..d36f8a8a3 --- /dev/null +++ b/pkg/chartutil/testdata/subsubalias/charts/sub-chart/charts/sub-sub-chart/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v2 +name: sub-sub-chart +description: sub-sub-chart +type: application +version: 0.0.1 diff --git a/pkg/chartutil/testdata/subsubalias/charts/sub-chart/charts/sub-sub-chart/templates/test.yaml b/pkg/chartutil/testdata/subsubalias/charts/sub-chart/charts/sub-sub-chart/templates/test.yaml new file mode 100644 index 000000000..7047ee1d7 --- /dev/null +++ b/pkg/chartutil/testdata/subsubalias/charts/sub-chart/charts/sub-sub-chart/templates/test.yaml @@ -0,0 +1 @@ +name: {{ required "name is required" .Values.name }} diff --git a/pkg/chartutil/testdata/subsubalias/values.yaml b/pkg/chartutil/testdata/subsubalias/values.yaml new file mode 100644 index 000000000..23db0c944 --- /dev/null +++ b/pkg/chartutil/testdata/subsubalias/values.yaml @@ -0,0 +1,6 @@ +sub1: + sub-sub1: + name: foo +sub2: + sub-sub1: + name: baz