Skip to content

Commit 3562f2a

Browse files
arikalon1claude
andauthored
Remove the helm golden render tests (#2206)
The golden files pinned the full rendered chart, so every change to any template failed CI until the files were regenerated. The targeted helm tests and the Holmes-only install tests stay; the shared values file they read moves to tests/holmes_values.yaml. Claude-Session: https://claude.ai/code/session_01QNTDU7nLkCv8qSJHW3kTE9 Signed-off-by: arik <alon.arik@gmail.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 0485545 commit 3562f2a

9 files changed

Lines changed: 6 additions & 3870 deletions

File tree

‎.github/workflows/holmes-bump.yaml‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,14 @@ jobs:
111111
with:
112112
python-version: 3.11
113113

114-
# Golden renders pin the chart of master; this chart intentionally differs from them.
115114
# --noconftest: tests/conftest.py needs the full runner dependencies, which these don't.
116115
- name: Helm template tests
117116
run: |
118117
shopt -s nullglob
119118
tests=(tests/test_helm*.py)
120119
if (( ${#tests[@]} == 0 )); then echo "no helm template tests at $RUNNER_VERSION"; exit 0; fi
121120
pip install pytest pyyaml
122-
pytest "${tests[@]}" -k "not golden" --noconftest -p no:cacheprovider -v
121+
pytest "${tests[@]}" --noconftest -p no:cacheprovider -v
123122
124123
- name: Check the packaged versions
125124
run: |

‎tests/helm_golden/default.NOTES.txt‎

Lines changed: 0 additions & 12 deletions
This file was deleted.

‎tests/helm_golden/default.yaml‎

Lines changed: 0 additions & 836 deletions
This file was deleted.

‎tests/helm_golden/holmes.NOTES.txt‎

Lines changed: 0 additions & 14 deletions
This file was deleted.

‎tests/helm_golden/holmes.yaml‎

Lines changed: 0 additions & 1387 deletions
This file was deleted.

‎tests/helm_golden/openshift.yaml‎

Lines changed: 0 additions & 1540 deletions
This file was deleted.

‎tests/helm_golden/prometheus_stack_alertmanager.yaml‎

Lines changed: 0 additions & 19 deletions
This file was deleted.

‎tests/test_helm_holmes_only.py‎

Lines changed: 5 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
"""
22
Helm template tests for `runner.enabled` (Holmes-only installs).
3-
4-
The golden tests pin the rendered chart for values that existing installs use, so any change to
5-
the runner-enabled output shows up as a diff. Regenerate the golden files only for an intended
6-
change to that output:
7-
8-
UPDATE_HELM_GOLDEN=1 pytest tests/test_helm_holmes_only.py
93
"""
104
import base64
11-
import os
125
import shutil
136
import subprocess
147
from pathlib import Path
@@ -18,49 +11,20 @@
1811
import yaml
1912

2013
CHART_PATH = Path(__file__).parent.parent / "helm" / "robusta"
21-
GOLDEN_DIR = Path(__file__).parent / "helm_golden"
22-
HOLMES_VALUES = GOLDEN_DIR / "holmes_values.yaml"
14+
HOLMES_VALUES = Path(__file__).parent / "holmes_values.yaml"
2315
KPS_ALERTMANAGER_SECRET = "charts/kube-prometheus-stack/templates/alertmanager/secret.yaml"
2416

2517
pytestmark = pytest.mark.skipif(shutil.which("helm") is None, reason="helm binary not available")
2618

2719
# Pinned so the output doesn't depend on the helm client's default Kubernetes version.
2820
BASE_ARGS = ["--namespace", "robusta", "--kube-version", "1.30.0"]
2921

30-
GOLDEN_SCENARIOS = {
31-
"default": ["--set", "clusterName=test", "--set", "sinksConfig[0].file_sink.name=test"],
32-
"holmes": ["-f", str(HOLMES_VALUES)],
33-
"openshift": [
34-
"-f",
35-
str(HOLMES_VALUES),
36-
"--set",
37-
"openshift.enabled=true,openshift.createScc=true,openshift.createPrivilegedScc=true",
38-
],
39-
"prometheus_stack_alertmanager": [
40-
"-f",
41-
str(HOLMES_VALUES),
42-
"--set",
43-
"enablePrometheusStack=true",
44-
"-s",
45-
KPS_ALERTMANAGER_SECRET,
46-
],
47-
}
48-
49-
HOLMES_ONLY_ARGS = ["-f", str(HOLMES_VALUES), "--set", "runner.enabled=false"]
22+
HOLMES_ARGS = ["-f", str(HOLMES_VALUES)]
23+
HOLMES_ONLY_ARGS = HOLMES_ARGS + ["--set", "runner.enabled=false"]
5024

5125
RUNNER_ONLY_KINDS_AND_NAMES = ["-runner", "kubewatch", "forwarder"]
5226

5327

54-
def normalize_versions(output: str) -> str:
55-
# CI and releases stamp the runner version over the 0.0.0 placeholder before running tests,
56-
# and the holmes dependency moves with every Holmes release.
57-
chart = yaml.safe_load((CHART_PATH / "Chart.yaml").read_text())
58-
app_version = str(chart["appVersion"])
59-
if app_version != "0.0.0":
60-
output = output.replace(app_version, "0.0.0")
61-
holmes_version = next(d["version"] for d in chart["dependencies"] if d["name"] == "holmes")
62-
return output.replace(f"holmes:{holmes_version}", "holmes:0.0.0")
63-
6428

6529
def helm_template(args: List[str], check: bool = True) -> subprocess.CompletedProcess:
6630
cmd = ["helm", "template", "robusta", str(CHART_PATH)] + BASE_ARGS + args
@@ -88,24 +52,14 @@ def playbooks_config(docs: List[dict]) -> dict:
8852
return yaml.safe_load(base64.b64decode(secret["data"]["active_playbooks.yaml"]).decode())
8953

9054

91-
@pytest.mark.parametrize("scenario", sorted(GOLDEN_SCENARIOS))
92-
def test_runner_enabled_render_matches_golden(scenario):
93-
output = normalize_versions(render(GOLDEN_SCENARIOS[scenario]))
94-
golden = GOLDEN_DIR / f"{scenario}.yaml"
95-
if os.environ.get("UPDATE_HELM_GOLDEN"):
96-
golden.write_text(output)
97-
assert golden.exists(), f"missing {golden}; run with UPDATE_HELM_GOLDEN=1"
98-
assert output == golden.read_text(), f"render of '{scenario}' differs from {golden}"
99-
100-
10155
def test_explicit_runner_enabled_matches_default():
102-
args = GOLDEN_SCENARIOS["holmes"]
56+
args = HOLMES_ARGS
10357
assert render(args + ["--set", "runner.enabled=true"]) == render(args)
10458

10559

10660
def test_missing_runner_enabled_keeps_the_runner():
10761
# `helm upgrade --reuse-values` from an older chart keeps the old defaults, which lack the key
108-
args = GOLDEN_SCENARIOS["holmes"]
62+
args = HOLMES_ARGS
10963
assert render(args + ["--set", "runner.enabled=null"]) == render(args)
11064

11165

@@ -223,15 +177,6 @@ def render_notes(tmp_path: Path, args: List[str]) -> str:
223177
return yaml.safe_load(output)["notes"]
224178

225179

226-
@pytest.mark.parametrize("scenario", ["default", "holmes"])
227-
def test_runner_enabled_notes_match_golden(tmp_path, scenario):
228-
output = normalize_versions(render_notes(tmp_path, GOLDEN_SCENARIOS[scenario]))
229-
golden = GOLDEN_DIR / f"{scenario}.NOTES.txt"
230-
if os.environ.get("UPDATE_HELM_GOLDEN"):
231-
golden.write_text(output)
232-
assert output == golden.read_text()
233-
234-
235180
def test_holmes_only_notes(tmp_path):
236181
notes = render_notes(tmp_path, HOLMES_ONLY_ARGS)
237182
assert "robusta-runner" not in notes

0 commit comments

Comments
 (0)