Files
cozystack/hack/pre-commit-generate-packages_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

47 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bats
load test_helper
add_generator() {
root="$1"
dir="$2"
mkdir -p "$root/$dir"
printf 'generate:\n\t@printf "%%s\\n" "%s" >> "$${GEN_LOG}"\n' "$dir" > "$root/$dir/Makefile"
}
@test "discovers package generators across categories" {
script="$PWD/hack/pre-commit-generate-packages.sh"
root=$(mktemp -d)
add_generator "$root" packages/apps/app
add_generator "$root" packages/extra/extra
add_generator "$root" packages/library/library
add_generator "$root" packages/system/system
mkdir -p "$root/packages/system/no-generator"
printf '# generate:\n.PHONY: generate\nall:\n\t@:\n' > "$root/packages/system/no-generator/Makefile"
mkdir -p "$root/packages/system/system/charts/vendor"
printf 'generate:\n\t@printf "vendored\\n" >> "$${GEN_LOG}"\n' > "$root/packages/system/system/charts/vendor/Makefile"
(cd "$root" && GEN_LOG="$root/generators.log" "$script")
expected=$(printf '%s\n' packages/apps/app packages/extra/extra packages/library/library packages/system/system)
actual=$(sort "$root/generators.log")
[ "$actual" = "$expected" ]
rm -rf "$root"
}
@test "stops after a package generator fails" {
script="$PWD/hack/pre-commit-generate-packages.sh"
root=$(mktemp -d)
mkdir -p "$root/packages/apps/failing" "$root/packages/system/later"
printf 'generate:\n\t@false\n' > "$root/packages/apps/failing/Makefile"
printf 'generate:\n\t@touch "$${LATER_MARKER}"\n' > "$root/packages/system/later/Makefile"
rc=0
(cd "$root" && LATER_MARKER="$root/later-ran" "$script") || rc=$?
[ "$rc" -ne 0 ]
[ ! -e "$root/later-ran" ]
rm -rf "$root"
}