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]