Skip to content

Commit

Permalink
test: add Kustomize test case for multiple helm charts with different…
Browse files Browse the repository at this point in the history
… version

Signed-off-by: Ardika Bagus <me@ardikabs.com>
  • Loading branch information
ardikabs committed Nov 1, 2023
1 parent 790dbf0 commit 6640f87
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 7 deletions.
117 changes: 117 additions & 0 deletions api/krusty/helmchartinflationgenerator_test.go
Expand Up @@ -567,6 +567,123 @@ metadata:
`)
}

// Reference: https://github.com/kubernetes-sigs/kustomize/issues/5163
func TestHelmChartInflationGeneratorForMultipleChartsDifferentVersion(t *testing.T) {
th := kusttest_test.MakeEnhancedHarnessWithTmpRoot(t)
defer th.Reset()
if err := th.ErrIfNoHelm(); err != nil {
t.Skip("skipping: " + err.Error())
}

copyValuesFilesTestChartsIntoHarness(t, th)

th.WriteK(th.GetRoot(), `
namespace: default
helmCharts:
- name: test-chart
releaseName: test
version: 1.0.0
skipTests: true
- name: minecraft
repo: https://itzg.github.io/minecraft-server-charts
version: 3.1.3
releaseName: test-1
- name: minecraft
repo: https://itzg.github.io/minecraft-server-charts
version: 3.1.4
releaseName: test-2
`)

m := th.Run(th.GetRoot(), th.MakeOptionsPluginsEnabled())
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
chart: test-1.0.0
name: my-deploy
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
spec:
containers:
- image: test-image:v1.0.0
imagePullPolicy: Always
---
apiVersion: v1
data:
rcon-password: Q0hBTkdFTUUh
kind: Secret
metadata:
labels:
app: test-1-minecraft
chart: minecraft-3.1.3
heritage: Helm
release: test-1
name: test-1-minecraft
namespace: default
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
labels:
app: test-1-minecraft
chart: minecraft-3.1.3
heritage: Helm
release: test-1
name: test-1-minecraft
namespace: default
spec:
ports:
- name: minecraft
port: 25565
protocol: TCP
targetPort: minecraft
selector:
app: test-1-minecraft
type: ClusterIP
---
apiVersion: v1
data:
rcon-password: Q0hBTkdFTUUh
kind: Secret
metadata:
labels:
app: test-2-minecraft
chart: minecraft-3.1.4
heritage: Helm
release: test-2
name: test-2-minecraft
namespace: default
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
labels:
app: test-2-minecraft
chart: minecraft-3.1.4
heritage: Helm
release: test-2
name: test-2-minecraft
namespace: default
spec:
ports:
- name: minecraft
port: 25565
protocol: TCP
targetPort: minecraft
selector:
app: test-2-minecraft
type: ClusterIP
`)
}

func copyValuesFilesTestChartsIntoHarness(t *testing.T, th *kusttest_test.HarnessEnhanced) {
t.Helper()

Expand Down
Expand Up @@ -786,22 +786,22 @@ func TestHelmChartInflationGeneratorUsingVersionWithoutRepo(t *testing.T) {
apiVersion: builtin
kind: HelmChartInflationGenerator
metadata:
name: foo-chart
name: foo-chart
name: test-chart
name: test-chart
version: 1.0.0
releaseName: foo-chart
releaseName: test
chartHome: ./charts
`)

cm, err := rm.Resources()[0].GetFieldValue("metadata.name")
assert.NoError(t, err)
assert.Equal(t, "bar", cm)

chartDir := filepath.Join(th.GetRoot(), "charts/foo-chart")
chartDir := filepath.Join(th.GetRoot(), "charts/test-chart")
assert.True(t, th.GetFSys().Exists(chartDir))

chartYamlContent, err := th.GetFSys().ReadFile(filepath.Join(chartDir, "Chart.yaml"))
assert.NoError(t, err)
assert.Contains(t, string(chartYamlContent), "name: foo-chart")
assert.Contains(t, string(chartYamlContent), "name: test-chart")
assert.Contains(t, string(chartYamlContent), "version: 1.0.0")
}
@@ -1,6 +1,6 @@
apiVersion: v2
name: foo-chart
description: A Helm chart for Kubernetes
name: test-chart
description: A simple test helm chart.

# A chart can be either an 'application' or a 'library' chart.
#
Expand Down

0 comments on commit 6640f87

Please sign in to comment.