villebro opened a new pull request, #217:
URL: https://github.com/apache/superset-kubernetes-operator/pull/217

   ## Summary
   
   The Helm chart has been receiving significant community contributions, but 
until now it had no tests — CI only ran `helm lint`, which catches syntax and 
schema issues but not rendering regressions. As the templates grow conditional 
logic (watch-scope RBAC, metrics wiring, cert volumes, extra manifests), a 
lint-only
     gate lets behavioral regressions through.
   
   This adds a `helm unittest` suite covering two happy-path scenarios — a 
minimal render (default `values.yaml`) and a comprehensive render (every knob 
set) — with full-render snapshots plus targeted assertions on invariants that 
must never silently change. It also adds a structural coverage gate that fails 
CI when a new `values.yaml` knob isn't exercised by the comprehensive test. 
This closes a gap a snapshot alone can't: a knob that defaults to null and 
renders nothing under defaults would otherwise leave every suite green while 
shipping untested. Codecov can't help here — Helm templates emit no coverage 
instrumentation — so coverage is enforced structurally against the documented 
`values.yaml` contract instead.
   
   Along the way this bumps the CI Helm pin from 3.19.2 to 4.2.3 (Helm 4 has 
been GA since late 2025) and puts it under Renovate, since the pin had been set 
manually and silently aged. The Helm-based install prerequisite is updated to 
Helm 4.
   
   ## Details
   
   - **Tests** (`charts/superset-operator/tests/`): `minimal_test.yaml`, 
`full_options_test.yaml` + `values/full-options.yaml`, and `helpers_test.yaml` 
(18 tests, 8 snapshots). Snapshots live in `tests/__snapshot__/`; chart/release 
identity is pinned per suite so they're stable across chart version bumps.
   - **Coverage gate**: `scripts/check-chart-values-covered.sh` (`make 
helm-values-covered`) uses `yq` to diff every `values.yaml` key path against 
the comprehensive values file and fails on any uncovered knob. Documented 
limitation: it keys off `values.yaml`, so a template reading an *undocumented* 
`.Values.x` isn't caught — that already violates the helm-docs contract and is 
expected to surface in review.
   - **Tooling**: pinned installers `scripts/install-helm-unittest.sh` 
(helm-3/4 aware) and `scripts/install-yq.sh` (version + SHA256). Renovate 
custom managers track the helm-unittest plugin, `yq`, and `helm` pins.
   - **Helm 4 on CI**: bumps the pinned Helm from 3.19.2 to 4.2.3, adds a `# 
renovate:` comment so the pin is auto-tracked going forward (it was manually 
pinned and had silently aged), and updates the install prerequisites in the 
docs to Helm 4 for the Helm-based install path. CI now validates the chart on 
the same Helm major the maintainer runs locally, which is also the version the 
snapshots were generated on.
   - **CI**: the `helm-lint` job becomes "Helm lint & test" and runs lint + 
unit tests + coverage gate. `release-rc.sh` runs the same checks; the releasing 
checklist and development-guidelines are updated (including the rule that any 
chart change must be exercised in the comprehensive test).
   - **Packaging**: adds a `.helmignore` (the chart had none) so `tests/` and 
snapshots don't ship in the released artifact; `.rat-excludes` skips the 
generated `.snap` files.
   
   Verified locally: gate fails on an uncovered knob and the minimal snapshot 
fails on a changed default, both reverting clean; `helm package` omits 
`tests/`; `helm-lint`/`helm-test`/`helm-values-covered` all pass.
   
   ## Note
   
   Bumping CI to Helm 4 and calling it the minimum for Helm deployers means we 
no longer exercise the Helm 3 floor — this is the intended change, not an 
oversight. The kubectl/kustomize install path needs no Helm and is unaffected.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to