mirror of
https://github.com/dredx/prole.git
synced 2026-09-27 18: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>
125 lines
3.5 KiB
Bash
125 lines
3.5 KiB
Bash
#shellcheck shell=sh
|
|
|
|
# shellcheck source=lib/libexec.sh
|
|
. "${SHELLSPEC_LIB:-./lib}/libexec.sh"
|
|
|
|
use includes replace_all
|
|
|
|
executor() {
|
|
#shellcheck disable=SC2039,SC3045
|
|
[ "$(ulimit -n)" -lt 1024 ] && ulimit -n 1024
|
|
|
|
count=0
|
|
eval count_specfiles count ${1+'"$@"'}
|
|
create_workdirs "$count"
|
|
|
|
#shellcheck disable=SC2034
|
|
SHELLSPEC_COVERAGE_SETUP="$SHELLSPEC_LIB/cov/kcov.sh"
|
|
|
|
# The directory of $SHELLSPEC_KCOV_IN_FILE should be empty
|
|
# kcov try to parse files around $SHELLSPEC_KCOV_IN_FILE
|
|
mkdir -p "${SHELLSPEC_KCOV_IN_FILE%/*}"
|
|
translator --coverage --fd=8 --progress "$@" > "$SHELLSPEC_KCOV_IN_FILE"
|
|
|
|
kcov_preprocess
|
|
|
|
#shellcheck disable=SC2039,SC2086
|
|
(
|
|
"$SHELLSPEC_KCOV_PATH" \
|
|
$SHELLSPEC_KCOV_COMMON_OPTS \
|
|
$SHELLSPEC_KCOV_OPTS \
|
|
--bash-method=DEBUG \
|
|
--bash-parser="$SHELLSPEC_SHELL" \
|
|
--bash-parse-files-in-dir=. \
|
|
--configure=command-name="shellspec $*" \
|
|
"$SHELLSPEC_COVERAGEDIR" "$SHELLSPEC_KCOV_IN_FILE"
|
|
)
|
|
|
|
eval "kcov_postprocess; return $?"
|
|
}
|
|
|
|
kcov_preprocess() {
|
|
[ -d "$SHELLSPEC_COVERAGEDIR" ] || return 0
|
|
|
|
# Cleanup previous coverage data
|
|
rm -rf "${SHELLSPEC_COVERAGEDIR:?}/${SHELLSPEC_KCOV_FILENAME:?}"*
|
|
}
|
|
|
|
kcov_postprocess() {
|
|
[ -d "$SHELLSPEC_COVERAGEDIR" ] || return 0
|
|
|
|
( CDPATH=
|
|
cd "$SHELLSPEC_COVERAGEDIR" || exit
|
|
# Delete unnecessary files and directories
|
|
rm -rf bash-helper.sh bash-helper-debug-trap.sh \
|
|
libbash_execve_redirector.so kcov-merged ||:
|
|
|
|
# Swap directory and symlink
|
|
if [ -L "$SHELLSPEC_KCOV_FILENAME" ]; then
|
|
link=$(ls -dl "$SHELLSPEC_KCOV_FILENAME")
|
|
link=${link#*" $SHELLSPEC_KCOV_FILENAME -> "}
|
|
link=${link%/} && link=${link##*/}
|
|
set -- "$link" "$SHELLSPEC_KCOV_FILENAME"
|
|
{ rm "$2" && mv "$1" "$2" && ln -s "$2" "$1"; } ||:
|
|
edit_in_place "index.json" kcov_fix_index "$1" "$2" # kcov version = v35
|
|
edit_in_place "index.js" kcov_fix_index "$1" "$2" # kcov version >= v36
|
|
fi
|
|
|
|
# Replace physical path to logical path
|
|
cd "$SHELLSPEC_PROJECT_ROOT" || exit
|
|
set -- "$(pwd -P)" "$(pwd -L)" "$SHELLSPEC_KCOV_FILENAME"
|
|
cd "$SHELLSPEC_COVERAGEDIR" || exit
|
|
for file in coverage.json sonarqube.xml cobertura.xml; do
|
|
edit_in_place "$3/$file" "kcov_fix_${file%.*}" "$1" "$2"
|
|
ln -snf "$3/$file" "$file" ||:
|
|
done
|
|
|
|
edit_in_place "index.html" kcov_add_extra_info
|
|
) 2>/dev/null
|
|
}
|
|
|
|
kcov_fix_index() {
|
|
while IFS= read -r line; do
|
|
includes "$line" "\"link\":\"$1/" && replace_all line "$1" "$2"
|
|
putsn "$line"
|
|
done
|
|
}
|
|
|
|
kcov_fix_coverage() {
|
|
while IFS= read -r line; do
|
|
includes "$line" "\"file\": \"$1/" && replace_all line "$1" "$2"
|
|
putsn "$line"
|
|
done
|
|
}
|
|
|
|
kcov_fix_sonarqube() {
|
|
while IFS= read -r line; do
|
|
includes "$line" "<file path=\"$1/" && replace_all line "$1" "$2"
|
|
putsn "$line"
|
|
done
|
|
}
|
|
|
|
kcov_fix_cobertura() {
|
|
while IFS= read -r line; do
|
|
includes "$line" "<source>$1" && replace_all line "$1" "$2"
|
|
includes "$line" "$2/</source>" && replace_all line "/</source>" "</source>"
|
|
putsn "$line"
|
|
done
|
|
}
|
|
|
|
kcov_add_extra_info() {
|
|
while IFS= read -r line; do
|
|
if includes "$line" "</body>"; then
|
|
putsn "<table width='100%' class='shellspecVersionInfo'>"
|
|
putsn "<tr><td class='versionInfo'>"
|
|
putsn "Tested by: <a href='https://shellspec.info'>ShellSpec</a>" \
|
|
"$SHELLSPEC_VERSION" \
|
|
"(with $SHELLSPEC_SHELL_TYPE $SHELLSPEC_SHELL_VERSION" \
|
|
"and $SHELLSPEC_KCOV_VERSION)"
|
|
putsn "</td></tr>"
|
|
putsn "</table>"
|
|
fi
|
|
putsn "$line"
|
|
done
|
|
}
|