phase 0
This commit is contained in:
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
# Phase 0 validation — prove the native stack actually runs inside the container.
|
||||
#
|
||||
# For each bundled sample (MR16 / MR27 / MR28) it exercises every heavy path:
|
||||
# 1. default run -> CAD kernel load + BOM .xlsx (openpyxl) + 6 thumbnails (pyrender/OSMesa)
|
||||
# 2. --query -> geometry query engine
|
||||
# 3. --diagram -> dimensional sheet export (cairosvg)
|
||||
#
|
||||
# Outputs persist on the host in ./_phase0_out for inspection.
|
||||
# Translation (--translate, needs ANTHROPIC_API_KEY) is intentionally skipped here.
|
||||
set -uo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
IMAGE="${IMAGE:-step-parser}"
|
||||
TAG="${TAG:-dev}"
|
||||
OUT="${OUT:-$PWD/_phase0_out}"
|
||||
mkdir -p "$OUT"
|
||||
|
||||
SAMPLES=(
|
||||
"MR16s Gen1_EN.step"
|
||||
"MR27s Gen1_EN.step"
|
||||
"MR28uws Gen1_EN.step"
|
||||
)
|
||||
|
||||
pass=0; fail=0
|
||||
for s in "${SAMPLES[@]}"; do
|
||||
stem="${s%.step}"
|
||||
echo "──────────────────────────────────────────────────────────────"
|
||||
echo " $s"
|
||||
echo "──────────────────────────────────────────────────────────────"
|
||||
|
||||
# Copy the baked-in sample into the mounted dir, then process it there so all
|
||||
# generated files land on the host. `set -e` makes any failing path fail the run.
|
||||
docker run --rm -v "$OUT:/data" --entrypoint sh "$IMAGE:$TAG" -c "
|
||||
set -e
|
||||
cp '/app/skill.src/$s' '/data/$s'
|
||||
echo '--- run 1: BOM + thumbnails (kernel + openpyxl + pyrender/OSMesa) ---'
|
||||
python /app/skill.src/step_processor.py '/data/$s' --no-translate --verbose
|
||||
echo '--- run 2: geometry query ---'
|
||||
python /app/skill.src/step_processor.py '/data/$s' --query 'bounding box'
|
||||
echo '--- run 3: external dimensional diagram (cairosvg) ---'
|
||||
python /app/skill.src/step_processor.py '/data/$s' --no-thumbnails --no-bom --diagram
|
||||
"
|
||||
rc=$?
|
||||
|
||||
# Verify the expected artifacts actually exist on the host.
|
||||
missing=""
|
||||
[ -f "$OUT/${stem}_bom.xlsx" ] || missing="$missing bom.xlsx"
|
||||
ls "$OUT/${stem}"_*.png >/dev/null 2>&1 || missing="$missing thumbnails"
|
||||
[ -f "$OUT/${stem}__external-diagram.svg" ] || missing="$missing diagram.svg"
|
||||
|
||||
if [ $rc -eq 0 ] && [ -z "$missing" ]; then
|
||||
echo "PASS: $s"
|
||||
pass=$((pass+1))
|
||||
else
|
||||
echo "FAIL: $s (exit=$rc, missing:${missing:- none})"
|
||||
fail=$((fail+1))
|
||||
fi
|
||||
done
|
||||
|
||||
echo "=============================================================="
|
||||
echo " Phase 0 smoke test: ${pass} passed, ${fail} failed"
|
||||
echo " Artifacts: $OUT"
|
||||
echo "=============================================================="
|
||||
[ "$fail" -eq 0 ]
|
||||
Reference in New Issue
Block a user