mirror of
https://github.com/cozystack/cozystack.git
synced 2026-10-23 03:27:50 +09:00
ci(pre-commit): detect schema drift across all packages
Restricting schema regeneration to application and extra packages left system and library metadata outside the pre-commit drift check. The regression tests must exercise the repository unit-test path; bats-core lifecycle hooks and result helpers are unavailable in that runner and prevent the assertions from executing. Fixes cozystack/cozystack#4416 Assisted-by: LLM Signed-off-by: frolov.so <opsmon.sh@yandex.com>
This commit is contained in:
1 parent
2c2c0301f7
commit
7280e2d7cc
4 files changed
+66
-11
No files matched your search
@@ -13,15 +13,10 @@ repos:
|
||||
files: ^(api/|pkg/apis/|pkg/generated/|internal/crdinstall/manifests/|packages/system/cozystack-controller/definitions/|packages/system/application-definition-crd/definition/|packages/system/backup-controller/definitions/|packages/system/backupstrategy-controller/definitions/|hack/update-codegen\.sh$|hack/boilerplate\.go\.txt$|Makefile$)
|
||||
pass_filenames: false
|
||||
- id: run-make-generate
|
||||
name: Run 'make generate' in all app directories
|
||||
name: Run 'make generate' in all package directories
|
||||
entry: |
|
||||
sh -c 'exec flock -x "$(git rev-parse --git-common-dir)/pre-commit.lock" "$@"' -- sh -c '
|
||||
for dir in ./packages/apps/*/ ./packages/extra/*/; do
|
||||
if [ -d "$dir" ]; then
|
||||
echo "Running make generate in $dir"
|
||||
make generate -C "$dir" || exit $?
|
||||
fi
|
||||
done
|
||||
hack/pre-commit-generate-packages.sh || exit $?
|
||||
git diff --color=always | cat
|
||||
'
|
||||
language: system
|
||||
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
for makefile in ./packages/*/*/Makefile; do
|
||||
[ -f "$makefile" ] || continue
|
||||
if awk '/^generate[[:space:]]*:/ { found=1 } END { exit !found }' "$makefile"; then
|
||||
dir=${makefile%/Makefile}
|
||||
echo "Running make generate in $dir"
|
||||
make generate -C "$dir"
|
||||
fi
|
||||
done
|
||||
Executable
+46
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bats
|
||||
# cozytest.sh provides no bats lifecycle or result helpers, so each test owns
|
||||
# its fixture and uses ordinary shell assertions.
|
||||
|
||||
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"
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
{
|
||||
"title": "Chart Values",
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
}
|
||||
"title": "Chart Values",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user