test: add Kustomize test case for multiple helm charts with different version

Signed-off-by: Ardika Bagus <me@ardikabs.com>
This commit is contained in:
Ardika Bagus
2023-10-28 11:47:16 +07:00
parent 790dbf0fdf
commit 6640f8799e
5 changed files with 124 additions and 7 deletions

View File

@@ -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()

View File

@@ -786,10 +786,10 @@ 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
`)
@@ -797,11 +797,11 @@ chartHome: ./charts
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")
}

View File

@@ -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.
#