Files
cozystack/hack/capi-core-components_test.bats
Myasnikov Daniil cc942fed68 test(tests): run unit suites with Bats and retain POSIX coverage
The shell translator rewrites test bodies and loses Bats reporting.
The unit lane needs complete TAP results and JUnit reports without
changing how live-cluster suites run.

Sourced production helpers still need a dash pass, and unit test bodies
need nounset without exporting shell options into subprocesses.

Assisted-by: LLM
Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
2026-10-07 11:04:00 +03:00

35 lines
1.7 KiB
Bash

#!/usr/bin/env bats
# capi-providers-core ships the Cluster API core manifests twice: as
# files/core-components.yaml, which a reviewer reads, and as files/components.gz,
# which the chart mounts into the cluster. Both are edited by hand; this package
# has no `make components`. An edit to the YAML alone reviews cleanly and changes
# nothing in a cluster, which is how the startupProbe from #2946 stayed out of
# the shipped manager. This holds the two files to the same bytes.
#
# The comparison is on the decompressed bytes, so the gzip header plays no part
# in it. `gzip -n` is still the flag to regenerate with: without it the header
# carries a timestamp and every regeneration rewrites the committed blob even
# when the input has not changed.
load test_helper
REPO_ROOT="$(cd "$(dirname "${BATS_TEST_FILENAME:-$0}")/.." && pwd)"
FILES="$REPO_ROOT/packages/system/capi-providers-core/files"
@test "core provider components.gz matches core-components.yaml" {
[ -f "$FILES/core-components.yaml" ] || { echo "missing core-components.yaml" >&2; return 1; }
[ -f "$FILES/components.gz" ] || { echo "missing components.gz" >&2; return 1; }
local work; work="$(mktemp -d)"
gzip -dc "$FILES/components.gz" > "$work/decompressed.yaml"
if ! cmp -s "$work/decompressed.yaml" "$FILES/core-components.yaml"; then
echo "components.gz does not match core-components.yaml" >&2
echo "the chart mounts the blob, so the cluster would run what the YAML does not say" >&2
echo "regenerate: gzip -9 -n -c files/core-components.yaml > files/components.gz" >&2
diff "$work/decompressed.yaml" "$FILES/core-components.yaml" | head -20 >&2 || true
rm -rf "$work"
return 1
fi
rm -rf "$work"
}