9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
70 lines
2.4 KiB
Bash
70 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Regression coverage for scripts that use Bash 4 associative arrays.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
PASS=0
|
|
FAIL=0
|
|
|
|
pass() { echo "[PASS] $1"; PASS=$((PASS + 1)); }
|
|
fail() { echo "[FAIL] $1"; FAIL=$((FAIL + 1)); }
|
|
|
|
first_line() {
|
|
local pattern="$1"
|
|
local file="$2"
|
|
grep -n "$pattern" "$file" | head -n 1 | cut -d: -f1
|
|
}
|
|
|
|
assert_guard_before_declare() {
|
|
local file="$1"
|
|
local mode="$2"
|
|
local label="$3"
|
|
local guard_line declare_line
|
|
|
|
guard_line="$(first_line 'BASH_VERSINFO\[0\] < 4' "$file")"
|
|
declare_line="$(first_line 'declare -A' "$file")"
|
|
|
|
if [[ -n "$guard_line" && -n "$declare_line" && "$guard_line" -lt "$declare_line" ]]; then
|
|
pass "$label guard appears before declare -A"
|
|
else
|
|
fail "$label guard must appear before first declare -A"
|
|
fi
|
|
|
|
if [[ "$mode" == "sourced" ]]; then
|
|
if grep -q 'return 1 2>/dev/null || exit 1' "$file"; then
|
|
pass "$label guard is safe when sourced"
|
|
else
|
|
fail "$label guard should return when sourced"
|
|
fi
|
|
else
|
|
if awk '/BASH_VERSINFO\[0\] < 4/{in_guard=1} in_guard && /exit 1/{found=1} /^fi$/{if(in_guard) exit} END{exit found ? 0 : 1}' "$file"; then
|
|
pass "$label guard exits for direct execution"
|
|
else
|
|
fail "$label guard should exit for direct execution"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
assert_guard_before_declare "$ROOT_DIR/lib/progress.sh" sourced "lib/progress.sh"
|
|
assert_guard_before_declare "$ROOT_DIR/installers/phases/03-features.sh" sourced "03-features.sh"
|
|
assert_guard_before_declare "$ROOT_DIR/scripts/pre-download.sh" direct "pre-download.sh"
|
|
assert_guard_before_declare "$ROOT_DIR/scripts/ods-test-functional.sh" direct "ods-test-functional.sh"
|
|
|
|
if grep -q '"$BASH" "$INSTALL_DIR/scripts/validate-env.sh"' "$ROOT_DIR/ods-cli"; then
|
|
pass "ods-cli config validate runs validate-env.sh through active Bash"
|
|
else
|
|
fail "ods-cli config validate should run validate-env.sh through active Bash"
|
|
fi
|
|
|
|
if grep -q '"$BASH" "$INSTALL_DIR/scripts/validate-manifests.sh"' "$ROOT_DIR/ods-cli"; then
|
|
pass "ods-cli config validate runs validate-manifests.sh through active Bash"
|
|
else
|
|
fail "ods-cli config validate should run validate-manifests.sh through active Bash"
|
|
fi
|
|
|
|
echo "Result: $PASS passed, $FAIL failed"
|
|
[[ "$FAIL" -eq 0 ]]
|