helmfile/test/integration/test-cases/issue-2409-sequential-kubec...

43 lines
2.1 KiB
Bash

# Issue #2409: Test that --sequential-helmfiles works with kubeContext from bases
# https://github.com/helmfile/helmfile/issues/2409
#
# This test replicates the exact user scenario:
# - Multiple files in helmfile.d/
# - bases: with relative paths (../bases/) for environments and defaults
# - Environment values set kubeContext (resolved via .Environment.Values.kubeContext)
# - Running diff against the minikube cluster to exercise kubeContext resolution
#
# Before the fix, os.Chdir() in the sequential path could break relative path
# resolution, causing kubeContext or KUBECONFIG to not resolve correctly.
issue_2409_input_dir="${cases_dir}/issue-2409-sequential-kubecontext/input/helmfile.d"
issue_2409_tmp=$(mktemp -d)
test_start "issue 2409 sequential helmfiles with kubeContext"
# Run diff with --sequential-helmfiles to verify kubeContext resolves correctly
# against the minikube cluster. This would fail with "context does not exist"
# if path resolution were broken by os.Chdir().
info "Running helmfile --sequential-helmfiles diff with kubeContext from bases"
bash -c "${helmfile} --sequential-helmfiles -f ${issue_2409_input_dir} diff --detailed-exitcode; code="'$?'"; [ "'${code}'" -eq 2 ]" \
|| fail "\"helmfile --sequential-helmfiles diff\" should exit 2 (changes detected)"
# Also verify template output contains both releases and the relative values file
info "Running helmfile --sequential-helmfiles template"
${helmfile} --sequential-helmfiles -f ${issue_2409_input_dir} template \
> ${issue_2409_tmp}/sequential.log 2>&1 \
|| fail "\"helmfile --sequential-helmfiles template\" shouldn't fail"
grep -q "test-release-2409" ${issue_2409_tmp}/sequential.log \
|| fail "release test-release-2409 from 01-app.yaml.gotmpl should be in output"
grep -q "test-infra-2409" ${issue_2409_tmp}/sequential.log \
|| fail "release test-infra-2409 from 02-infra.yaml.gotmpl should be in output"
grep -q "common-values-2409" ${issue_2409_tmp}/sequential.log \
|| fail "relative values file values/common.yaml should be resolved in sequential mode"
rm -rf ${issue_2409_tmp}
test_pass "issue 2409 sequential helmfiles with kubeContext"