generated from coulomb/repo-seed
Add external extension acceptance path
This commit is contained in:
106
scripts/external_extension_acceptance.sh
Executable file
106
scripts/external_extension_acceptance.sh
Executable file
@@ -0,0 +1,106 @@
|
||||
#!/usr/bin/env sh
|
||||
set -eu
|
||||
|
||||
ROOT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
|
||||
MODE="${1:-plan}"
|
||||
EXTENSION_DIR="${GUIDE_BOARD_ACCEPT_EXTENSION_DIR:-../open-cmis-tck}"
|
||||
TARGET="${GUIDE_BOARD_ACCEPT_TARGET:-../open-cmis-tck/profiles/targets/kontextual-cmis-compat.json}"
|
||||
ASSESSMENT="${GUIDE_BOARD_ACCEPT_ASSESSMENT:-../open-cmis-tck/profiles/assessments/cmis-browser-baseline.json}"
|
||||
OUTPUT_DIR="${GUIDE_BOARD_ACCEPT_OUTPUT_DIR:-${TMPDIR:-/tmp}/guide-board-external-extension-acceptance}"
|
||||
PLAN_OUTPUT="${GUIDE_BOARD_ACCEPT_PLAN_OUTPUT:-$OUTPUT_DIR/plan.json}"
|
||||
RUN_DIR="${GUIDE_BOARD_ACCEPT_RUN_DIR:-$OUTPUT_DIR/open-cmis-tck-baseline}"
|
||||
PYTHON="${PYTHON:-python3}"
|
||||
|
||||
case "$MODE" in
|
||||
plan|run)
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [plan|run]" >&2
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
|
||||
cd "$ROOT_DIR"
|
||||
export PYTHONPATH="$ROOT_DIR/src${PYTHONPATH:+:$PYTHONPATH}"
|
||||
|
||||
if [ ! -f "$EXTENSION_DIR/extension.json" ]; then
|
||||
echo "ERROR: extension manifest not found at $EXTENSION_DIR/extension.json" >&2
|
||||
exit 66
|
||||
fi
|
||||
|
||||
mkdir -p "$OUTPUT_DIR"
|
||||
|
||||
echo "==> Listing discovered extensions"
|
||||
"$PYTHON" -m guide_board \
|
||||
--root "$ROOT_DIR" \
|
||||
--extension-dir "$EXTENSION_DIR" \
|
||||
extensions list
|
||||
|
||||
echo "==> Validating extension manifests"
|
||||
"$PYTHON" -m guide_board \
|
||||
--root "$ROOT_DIR" \
|
||||
--extension-dir "$EXTENSION_DIR" \
|
||||
extensions validate
|
||||
|
||||
echo "==> Validating target profile"
|
||||
"$PYTHON" -m guide_board \
|
||||
--root "$ROOT_DIR" \
|
||||
--extension-dir "$EXTENSION_DIR" \
|
||||
profile validate-target "$TARGET"
|
||||
|
||||
echo "==> Validating assessment profile"
|
||||
"$PYTHON" -m guide_board \
|
||||
--root "$ROOT_DIR" \
|
||||
--extension-dir "$EXTENSION_DIR" \
|
||||
profile validate-assessment "$ASSESSMENT"
|
||||
|
||||
echo "==> Generating run plan"
|
||||
"$PYTHON" -m guide_board \
|
||||
--root "$ROOT_DIR" \
|
||||
--extension-dir "$EXTENSION_DIR" \
|
||||
plan \
|
||||
--target "$TARGET" \
|
||||
--assessment "$ASSESSMENT" \
|
||||
--output "$PLAN_OUTPUT"
|
||||
|
||||
if [ "$MODE" = "plan" ]; then
|
||||
echo "External extension acceptance plan passed."
|
||||
echo "Plan output: $PLAN_OUTPUT"
|
||||
echo "Run live acceptance with: $0 run"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "==> Running live assessment"
|
||||
"$PYTHON" -m guide_board \
|
||||
--root "$ROOT_DIR" \
|
||||
--extension-dir "$EXTENSION_DIR" \
|
||||
run \
|
||||
--target "$TARGET" \
|
||||
--assessment "$ASSESSMENT" \
|
||||
--output-dir "$RUN_DIR"
|
||||
|
||||
echo "==> Verifying retained run artifacts"
|
||||
for path in \
|
||||
"$RUN_DIR/run.json" \
|
||||
"$RUN_DIR/plan.json" \
|
||||
"$RUN_DIR/retention-summary.json" \
|
||||
"$RUN_DIR/normalized/evidence.json" \
|
||||
"$RUN_DIR/normalized/findings.json" \
|
||||
"$RUN_DIR/normalized/mappings.json" \
|
||||
"$RUN_DIR/reports/assessment-package.json" \
|
||||
"$RUN_DIR/reports/report.md"
|
||||
do
|
||||
if [ ! -f "$path" ]; then
|
||||
echo "ERROR: expected artifact missing: $path" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "==> Reviewing retained report paths"
|
||||
"$PYTHON" -m guide_board \
|
||||
--root "$ROOT_DIR" \
|
||||
runs report \
|
||||
--runs-dir "$OUTPUT_DIR"
|
||||
|
||||
echo "External extension live acceptance passed."
|
||||
echo "Run artifacts: $RUN_DIR"
|
||||
Reference in New Issue
Block a user