mirror of
https://github.com/omacom/omarchy.git
synced 2026-09-28 22:37:26 +08:00
52 lines
1.4 KiB
Bash
Executable File
52 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
|
TEST_DIR="$ROOT/test/shell.d"
|
|
|
|
shopt -s nullglob
|
|
tests=()
|
|
for test in "$TEST_DIR"/*-test.sh; do
|
|
[[ $(basename "$test") == "base-test.sh" ]] && continue
|
|
tests+=("$test")
|
|
done
|
|
shopt -u nullglob
|
|
|
|
if (( ${#tests[@]} == 0 )); then
|
|
echo "No shell tests found in $TEST_DIR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Keep going after a failing file. A test file exits at its first failed
|
|
# assertion, so aborting the run there too would hide every file after it --
|
|
# one packaging failure was masking 114 of 134 files.
|
|
output=$(mktemp)
|
|
trap 'rm -f "$output"' EXIT
|
|
failed=()
|
|
skipped=()
|
|
for test in "${tests[@]}"; do
|
|
printf '==> %s\n' "${test#$ROOT/}"
|
|
bash "$test" | tee "$output" || failed+=("${test#$ROOT/}")
|
|
if grep -q '^ok - .* # SKIP$' "$output"; then
|
|
skipped+=("${test#$ROOT/}")
|
|
fi
|
|
done
|
|
|
|
if (( ${#skipped[@]} > 0 )); then
|
|
printf '\nSkipped checks in %d of %d test files:\n' "${#skipped[@]}" "${#tests[@]}"
|
|
printf ' %s\n' "${skipped[@]}"
|
|
fi
|
|
|
|
if (( ${#failed[@]} > 0 )); then
|
|
printf '\n%d of %d test files failed:\n' "${#failed[@]}" "${#tests[@]}" >&2
|
|
printf ' %s\n' "${failed[@]}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if (( ${#skipped[@]} == 0 )); then
|
|
printf '\nAll %d test files passed.\n' "${#tests[@]}"
|
|
else
|
|
printf '\n%d test files completed without failures; %d had skipped checks.\n' "${#tests[@]}" "${#skipped[@]}"
|
|
fi
|