mirror of
https://github.com/dredx/prole.git
synced 2026-09-27 12:34:30 +00:00
- Introduce lib/shell helpers and keep etc/* scripts thin via compatibility shims - Move Kerberos validation to scripts/validation/check_kerberos.sh and update callers - Add deterministic shellspec unit tests under tests/shellspec/ and wire Maven to run them - Add minimal Spring Boot authority module with startup + /health endpoint and Maven wiring - Document the new layout in docs/layout.md Co-authored-by: Junie <junie@jetbrains.com>
153 lines
3.3 KiB
Bash
Executable File
153 lines
3.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Run tests in docker
|
|
|
|
# This script is for development purposes.
|
|
# It provide as is, do not any support.
|
|
# It may change without notice.
|
|
|
|
set -eu
|
|
|
|
if [ $# -eq 0 ]; then
|
|
cat <<'USAGE'
|
|
Usage: test_in_docker.sh [Dockerfile..] [-- COMMAND]
|
|
|
|
Run tests in docker
|
|
|
|
Examples
|
|
contrib/test_in_docker.sh dockerfiles/*
|
|
contrib/test_in_docker.sh dockerfiles/debian-9-*
|
|
contrib/test_in_docker.sh dockerfiles/*-o # ends with -o is supported os
|
|
contrib/test_in_docker.sh dockerfiles/*bash* -- contrib/bugs.sh
|
|
|
|
To delete all shellspec images
|
|
docker rmi $(docker images shellspec -q)
|
|
USAGE
|
|
exit 0
|
|
fi
|
|
|
|
LF="
|
|
"
|
|
|
|
failures='' count=0 failures_count=0 total_count=0
|
|
|
|
main() {
|
|
options="" pull='' shift_count=0
|
|
for arg in "$@"; do
|
|
shift_count=$((shift_count + 1))
|
|
case $arg in
|
|
--) break ;;
|
|
-*)
|
|
[ "$arg" = "--pull" ] && pull=1
|
|
options="${options}${arg} "
|
|
;;
|
|
*) total_count=$((total_count + 1))
|
|
esac
|
|
done
|
|
|
|
cd contrib/helpers
|
|
docker build ${pull:+--pull} -t shellspec:helpers . | grayout
|
|
cd "$OLDPWD"
|
|
|
|
for arg in "$@"; do
|
|
shift "$shift_count"
|
|
shift_count=0
|
|
case $arg in
|
|
--) break ;;
|
|
-*) continue ;;
|
|
esac
|
|
run "$arg" "$@"
|
|
done
|
|
}
|
|
|
|
finished() {
|
|
if [ -f "$iidfile" ]; then
|
|
rm "$iidfile" ||:
|
|
fi
|
|
|
|
if [ "$failures" ]; then
|
|
echo >&2
|
|
echo "Failures:" >&2
|
|
echo "$failures" >&2
|
|
fi
|
|
}
|
|
|
|
info() {
|
|
printf '\033[1;35m%s\033[0m\n' "$*" >&2
|
|
}
|
|
|
|
grayout() {
|
|
while IFS= read -r line; do
|
|
printf '\033[1;2;37m\033[90m%s\033[0m\n' "$line" >&2
|
|
done
|
|
}
|
|
|
|
iidfile=$(mktemp -t shellspec.XXXXXXXX)
|
|
trap 'finished; exit 1' INT
|
|
trap 'finished' EXIT
|
|
|
|
run() {
|
|
dockerfile=$1
|
|
shift
|
|
|
|
info "======================================================================"
|
|
info "$dockerfile:" "$@"
|
|
count=$((count + 1))
|
|
os="${dockerfile##*/}"
|
|
os="${os#.}"
|
|
os="${os%-!}"
|
|
image="shellspec:$os"
|
|
old_image=$(docker images -q --no-trunc "$image")
|
|
|
|
# shellcheck disable=SC2086
|
|
docker build --iidfile "$iidfile" $options - < "$dockerfile" | grayout
|
|
base_image=$(cat "$iidfile")
|
|
|
|
info "Create image from base image: $base_image"
|
|
docker build --iidfile "$iidfile" -t "$image" --build-arg "IMAGE=$base_image" . -f "dockerfiles/.shellspec" | grayout
|
|
new_image=$(cat "$iidfile")
|
|
|
|
if [ "$old_image" ] && [ "$old_image" != "$new_image" ]; then
|
|
info "Delete old image $old_image"
|
|
docker rmi "$old_image" >/dev/null ||:
|
|
fi
|
|
info
|
|
info "Starting $dockerfile:" "$@"
|
|
info
|
|
docker run -it --rm "$image" "$@" &&:
|
|
xs=$?
|
|
info
|
|
if [ "$xs" -ne 0 ]; then
|
|
failures="${failures}- ${os} [$xs]${LF}"
|
|
failures_count=$((failures_count + 1))
|
|
fi
|
|
summary
|
|
info
|
|
}
|
|
|
|
summary() {
|
|
[ "$xs" -eq 0 ] && color="\033[32m" || color="\033[31m"
|
|
[ "$failures_count" -eq 0 ] && fcolor="\033[32m" || fcolor="\033[31m"
|
|
set -- "$count" "$total_count" "$failures_count"
|
|
printf "${color}##############################\n\033[m"
|
|
printf "${color}# exit status: %3d #\n\033[m" "$xs"
|
|
printf "${color}# ${fcolor}%3d / %3d (failures: %3d)${color} #\n\033[m" "$@"
|
|
printf "${color}##############################\n\033[m"
|
|
if [ "$failures" ]; then
|
|
echo "$failures"
|
|
fi
|
|
} >&2
|
|
|
|
start=$(date) start_sec=$(date +%s)
|
|
main "$@"
|
|
end=$(date) end_sec=$(date +%s)
|
|
sec=$((end_sec - start_sec))
|
|
|
|
echo "$start" >&2
|
|
echo "$end" >&2
|
|
echo "Done. $count tests, $sec sec ($((sec / 60)) min)" >&2
|
|
|
|
if [ "$failures" ]; then
|
|
exit 1
|
|
fi
|