90 lines
3.3 KiB
Bash
Executable File
90 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Test for issue #2275: helmfile should detect cluster version and pass to helm-diff
|
|
# Without this fix, helm-diff falls back to v1.20.0 and fails for charts requiring newer versions
|
|
|
|
issue_2275_input_dir="${cases_dir}/issue-2275/input"
|
|
issue_2275_tmp_dir=$(mktemp -d)
|
|
|
|
cd "${issue_2275_input_dir}"
|
|
|
|
test_start "issue-2275: auto-detect kubernetes version for helm-diff"
|
|
|
|
info "Testing helmfile apply with chart requiring Kubernetes >=1.25.0"
|
|
info "Expected: Success with auto-detected cluster version"
|
|
|
|
# Test 1: Apply should succeed with auto-detected cluster version
|
|
${helmfile} apply --skip-diff-on-install --suppress-diff > "${issue_2275_tmp_dir}/test-2275-output.txt" 2>&1
|
|
code=$?
|
|
|
|
if [ $code -ne 0 ]; then
|
|
if grep -q "incompatible with Kubernetes v1.20.0" "${issue_2275_tmp_dir}/test-2275-output.txt"; then
|
|
cat "${issue_2275_tmp_dir}/test-2275-output.txt"
|
|
rm -rf "${issue_2275_tmp_dir}"
|
|
fail "Issue #2275 regression: helm-diff fell back to v1.20.0"
|
|
else
|
|
cat "${issue_2275_tmp_dir}/test-2275-output.txt"
|
|
rm -rf "${issue_2275_tmp_dir}"
|
|
fail "Unexpected error during apply"
|
|
fi
|
|
fi
|
|
|
|
info "Chart installed successfully with auto-detected version"
|
|
|
|
# Test 2: Diff should work with auto-detected version
|
|
info "Testing helmfile diff with auto-detected cluster version"
|
|
|
|
${helmfile} diff > "${issue_2275_tmp_dir}/test-2275-diff-output.txt" 2>&1
|
|
code=$?
|
|
|
|
if [ $code -ne 0 ] && [ $code -ne 2 ]; then
|
|
if grep -q "incompatible with Kubernetes v1.20.0" "${issue_2275_tmp_dir}/test-2275-diff-output.txt"; then
|
|
cat "${issue_2275_tmp_dir}/test-2275-diff-output.txt"
|
|
rm -rf "${issue_2275_tmp_dir}"
|
|
fail "Issue #2275 regression in diff: helm-diff fell back to v1.20.0"
|
|
else
|
|
cat "${issue_2275_tmp_dir}/test-2275-diff-output.txt"
|
|
rm -rf "${issue_2275_tmp_dir}"
|
|
fail "Unexpected error during diff"
|
|
fi
|
|
fi
|
|
|
|
info "Diff succeeded with auto-detected version"
|
|
|
|
# Test 3: Second apply (upgrade scenario) - this is the critical test case from issue #2275
|
|
# The first apply worked with --skip-diff-on-install, but second apply would fail without the fix
|
|
info "Testing second helmfile apply (upgrade scenario) - critical test for issue #2275"
|
|
info "Modifying chart to trigger an actual upgrade..."
|
|
|
|
# Update chart version to trigger an upgrade
|
|
sed -i.bak 's/version: 1.0.0/version: 1.0.1/' test-chart/Chart.yaml
|
|
|
|
info "Running helmfile apply to upgrade chart (this will run diff)"
|
|
info "This would fail with 'incompatible with Kubernetes v1.20.0' before the fix"
|
|
|
|
${helmfile} apply --suppress-diff > "${issue_2275_tmp_dir}/test-2275-apply2-output.txt" 2>&1
|
|
code=$?
|
|
|
|
# Restore original chart version
|
|
mv test-chart/Chart.yaml.bak test-chart/Chart.yaml
|
|
|
|
if [ $code -ne 0 ]; then
|
|
if grep -q "incompatible with Kubernetes v1.20.0" "${issue_2275_tmp_dir}/test-2275-apply2-output.txt"; then
|
|
cat "${issue_2275_tmp_dir}/test-2275-apply2-output.txt"
|
|
rm -rf "${issue_2275_tmp_dir}"
|
|
fail "Issue #2275 regression: upgrade failed - helm-diff fell back to v1.20.0"
|
|
else
|
|
cat "${issue_2275_tmp_dir}/test-2275-apply2-output.txt"
|
|
rm -rf "${issue_2275_tmp_dir}"
|
|
fail "Unexpected error during upgrade"
|
|
fi
|
|
fi
|
|
|
|
info "Upgrade succeeded with auto-detected version"
|
|
|
|
# Cleanup
|
|
${helm} uninstall test-release-2275 --namespace default 2>/dev/null || true
|
|
rm -rf "${issue_2275_tmp_dir}"
|
|
|
|
test_pass "issue-2275: auto-detect kubernetes version for helm-diff"
|