Files
nexarch/scripts/qa03-epic-gate.sh
patrickandClaude Sonnet 5.5 5b8c20777d refactor: Pruefgate-Pakete nach Funktion benannt, migration* gruppiert
- dms/ai/workflow: qa0x-Pakete nach internal/gates/<thema> verschoben, Paketname = Thema
- internal/migration{acl,audit,...} -> internal/migration/{acl,audit,...}
- Importpfade, Gate-Skripte und zwei relative Migrationspfade angepasst
- keine Logikaenderung; mail-Gates bewusst unveraendert (pfadabhaengig)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 12:44:21 +01:00

44 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# QA-03: fuehrt die automatisierten Pruefungen aller Kacheln des Epics
# "Dokumentenkern" aus (Go-Pakete gegen echte PostgreSQL, Frontend-Suiten mit
# vitest) und gibt eine Ergebnistabelle aus. Exit 1, sobald eine Suite scheitert.
# qa03-epic-gate.sh [ROOT] Env: TEST_TENANT_DSN, QA03_SKIP_WEB=1 ueberspringt Frontend
set -uo pipefail
root="${1:-.}"
cd "$root"
declare -a rows
fail=0
record() { rows+=("$1|$2|$3"); [ "$3" = PASS ] || fail=1; }
go_suite() { # ticket packages...
local ticket="${1//\//_}"; local label="$1"; shift
if (cd dms && go test -count=1 "$@" >"/tmp/qa03-$ticket.log" 2>&1); then record "$label" "go: $*" PASS; else record "$label" "go: $*" FAIL; tail -20 "/tmp/qa03-$ticket.log" >&2; fi
}
go_suite DOC-01/02/04 ./internal/upload/ ./internal/thumbnail/ ./internal/documenttype/
go_suite DOC-05 ./internal/documentapi/
go_suite DOC-06 ./internal/pdfconvert/
go_suite DOC-08 ./internal/export/
go_suite DOC-10 ./internal/folder/ ./internal/folderapi/
go_suite DOC-11/12 ./internal/trash/ ./internal/trashapi/
go_suite DOC-14 ./internal/docmerge/
go_suite DOC-15 ./internal/bulkedit/ ./internal/bulkeditapi/
go_suite QA-01 ./internal/testcorpus/
go_suite QA-03 ./internal/gates/documentcore/
if [ "${QA03_SKIP_WEB:-0}" != 1 ]; then
for d in shl dms-upload dms-browser pdf-viewer; do
case "$d" in shl) t="SHL-01";; dms-upload) t="DOC-03";; dms-browser) t="DOC-10/12/15";; pdf-viewer) t="DOC-05/13";; esac
if (cd "web/$d" && { [ -f package-lock.json ] && npm ci --no-audit --no-fund --loglevel=error || npm install --no-audit --no-fund --loglevel=error; } >"/tmp/qa03-web-$d.log" 2>&1 && npx vitest run >>"/tmp/qa03-web-$d.log" 2>&1); then
record "$t" "web/$d: $(grep -E 'Tests ' "/tmp/qa03-web-$d.log" | tail -1 | sed 's/^ *//')" PASS
else
record "$t" "web/$d" FAIL; tail -20 "/tmp/qa03-web-$d.log" >&2
fi
done
fi
printf '\n%-14s %-6s %s\n' Ticket Ergebnis Suite
for r in "${rows[@]}"; do IFS='|' read -r t s res <<<"$r"; printf '%-14s %-6s %s\n' "$t" "$res" "$s"; done
exit "$fail"