Files
autodoc/tests/checks/test_workflow_build_release.sh
T
Iisyourdad f47aca67c2
Template tests / tests (push) Failing after 4s
Finish Electron shell and workflow wiring
2026-06-10 18:32:30 -05:00

52 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# Workflow check: run the offline build with temp output roots and verify the
# report, manifest, and sample assets are produced.
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
cd "$ROOT_DIR"
TMP_ROOT="$(mktemp -d)"
trap 'rm -rf "$TMP_ROOT"' EXIT
BUILD_ROOT="$TMP_ROOT/build"
EXAMPLES_ROOT="$TMP_ROOT/examples"
STEPFORGE_BUILD_DIR="$BUILD_ROOT" \
STEPFORGE_EXAMPLES_DIR="$EXAMPLES_ROOT" \
bash scripts/build-release.sh >/dev/null
for f in build_report.md artifacts_manifest.json; do
if [[ ! -s "$BUILD_ROOT/$f" ]]; then
echo "Missing build output: $f" >&2
exit 1
fi
done
if ! find "$BUILD_ROOT/artifacts" -maxdepth 1 -type f -name '*.tar.gz' -print -quit | grep -q .; then
echo "Missing portable tarball" >&2
exit 1
fi
if [[ ! -s "$EXAMPLES_ROOT/sample-manifest.json" ]]; then
echo "Missing sample manifest from build" >&2
exit 1
fi
if [[ ! -s "$EXAMPLES_ROOT/sample-guide.sfgz" ]]; then
echo "Missing sample archive from build" >&2
exit 1
fi
MANIFEST_FILE="$BUILD_ROOT/artifacts_manifest.json" node - <<'NODE'
const fs = require('node:fs');
const manifest = JSON.parse(fs.readFileSync(process.env.MANIFEST_FILE, 'utf8'));
if (manifest.format !== 'stepforge-artifacts-manifest') throw new Error('unexpected build manifest format');
if (!Array.isArray(manifest.files) || manifest.files.length < 3) throw new Error('missing build files');
if (!manifest.files.some((file) => file.path.endsWith('.tar.gz'))) throw new Error('missing tarball entry');
if (!manifest.files.some((file) => file.path.endsWith('sample-guide.sfgz'))) throw new Error('missing sample archive entry');
NODE
echo "build release OK"