fix: add tests as per PR review

This commit is contained in:
Jesús Fernández 2025-03-07 11:42:03 +01:00
parent ca15256d4a
commit e0e53ab7eb
No known key found for this signature in database
GPG Key ID: F009C46F547D9A66
3 changed files with 81 additions and 1 deletions

View File

@ -1078,3 +1078,42 @@ func TestDeployment_excludeLabelPropagationPrefixes(t *testing.T) {
assert.Contains(t, container.Args, "--exclude-label-propagation-prefix=prefix.com/") assert.Contains(t, container.Args, "--exclude-label-propagation-prefix=prefix.com/")
assert.Contains(t, container.Args, "--exclude-label-propagation-prefix=complete.io/label") assert.Contains(t, container.Args, "--exclude-label-propagation-prefix=complete.io/label")
} }
func TestNamespaceOverride(t *testing.T) {
t.Parallel()
chartPath := "../../gha-runner-scale-set-controller"
releaseName := "test"
releaseNamespace := "test-" + strings.ToLower(random.UniqueId())
namespaceOverride := "test-" + strings.ToLower(random.UniqueId())
options := &helm.Options{
Logger: logger.Discard,
SetValues: map[string]string{
"namespaceOverride": namespaceOverride,
},
KubectlOptions: k8s.NewKubectlOptions("", "", releaseNamespace),
}
templateFiles, err := os.ReadDir(filepath.Join(chartPath, "templates"))
require.NoError(t, err)
for _, f := range templateFiles {
if filepath.Ext(f.Name()) != ".yaml" && filepath.Ext(f.Name()) != ".yml" {
continue
}
templateFile := filepath.Join("templates", f.Name())
output, err := helm.RenderTemplateE(t, options, chartPath, releaseName, []string{templateFile})
if err != nil {
// template is conditional or has dependencies, skip
continue
}
var renderedObject map[string]interface{}
helm.UnmarshalK8SYaml(t, output, &renderedObject)
if renderedObject["metadata"].(map[string]interface{})["namespace"] != nil {
assert.Equal(t, namespaceOverride, renderedObject["metadata"].(map[string]interface{})["namespace"], fmt.Sprintf("template %s from chart %s should have namespace %s", f.Name(), chartPath, namespaceOverride))
}
}
}

View File

@ -136,7 +136,7 @@ flags:
# excludeLabelPropagationPrefixes: # excludeLabelPropagationPrefixes:
# - "argocd.argoproj.io/instance" # - "argocd.argoproj.io/instance"
# Add the option to deploy in another namespace rather than .Release.Namespace. # Overrides the default `.Release.Namespace` for all resources in this chart.
namespaceOverride: "" namespaceOverride: ""
## Defines the K8s client rate limiter parameters. ## Defines the K8s client rate limiter parameters.

View File

@ -2,6 +2,7 @@ package tests
import ( import (
"fmt" "fmt"
"os"
"path/filepath" "path/filepath"
"strings" "strings"
"testing" "testing"
@ -2143,3 +2144,43 @@ func TestAutoscalingRunnerSetAnnotationValuesHash(t *testing.T) {
assert.NotEqual(t, firstHash, secondHash) assert.NotEqual(t, firstHash, secondHash)
assert.LessOrEqual(t, len(secondHash), 63) assert.LessOrEqual(t, len(secondHash), 63)
} }
func TestNamespaceOverride(t *testing.T) {
t.Parallel()
chartPath := "../../gha-runner-scale-set"
releaseName := "test"
releaseNamespace := "test-" + strings.ToLower(random.UniqueId())
namespaceOverride := "test-" + strings.ToLower(random.UniqueId())
options := &helm.Options{
Logger: logger.Discard,
SetValues: map[string]string{
"namespaceOverride": namespaceOverride,
},
KubectlOptions: k8s.NewKubectlOptions("", "", releaseNamespace),
}
templateFiles, err := os.ReadDir(filepath.Join(chartPath, "templates"))
require.NoError(t, err)
for _, f := range templateFiles {
if filepath.Ext(f.Name()) != ".yaml" && filepath.Ext(f.Name()) != ".yml" {
continue
}
templateFile := filepath.Join("templates", f.Name())
output, err := helm.RenderTemplateE(t, options, chartPath, releaseName, []string{templateFile})
if err != nil {
// template is conditional or has dependencies, skip
continue
}
var renderedObject map[string]interface{}
helm.UnmarshalK8SYaml(t, output, &renderedObject)
if renderedObject["metadata"].(map[string]interface{})["namespace"] != nil {
assert.Equal(t, namespaceOverride, renderedObject["metadata"].(map[string]interface{})["namespace"], fmt.Sprintf("template %s from chart %s should have namespace %s", f.Name(), chartPath, namespaceOverride))
}
}
}