#!/usr/bin/env bash # Regression tests for the current public install/workspace documentation verifier. set -euo pipefail root="$(cd "$(dirname "$0")/.." && pwd -P)" fixture="$(mktemp -d "${TMPDIR:-/tmp}/thoth-install-docs-test.XXXXXX")" trap 'rm -rf "$fixture"' EXIT HUP INT TERM expect_success() { local marker="$1" shift local output output="$($@)" grep -Fqx -- "$marker" <<<"$output" || { echo "missing verification marker: $marker" >&2 printf '%s\n' "$output" >&2 exit 1 } } expect_success 'Installation examples contract passed' \ env -u TMPDIR -u THT_AUTH_CONFIG_ROOT "$root/scripts/verify-workspace-install-docs.sh" --fixtures-only expect_success 'local installation documentation verification passed' \ "$root/scripts/verify-workspace-install-docs.sh" --profile local expect_success 'server installation documentation verification passed' \ "$root/scripts/verify-workspace-install-docs.sh" --profile server if "$root/scripts/verify-workspace-install-docs.sh" --profile invalid >/dev/null 2>&1; then echo 'invalid verification profile was accepted' >&2 exit 1 fi mkdir -p "$fixture/docs" "$fixture/scripts" cp -R "$root/docs/install" "$fixture/docs/install" cp -R "$root/docs/operations" "$fixture/docs/operations" cp "$root/docs/guida-utente.md" "$fixture/docs/guida-utente.md" mkdir -p "$fixture/docs/architecture" "$fixture/docs/contracts" cp "$root/docs/architecture/overview.md" "$fixture/docs/architecture/overview.md" cp "$root/docs/contracts/catalog-schema-snapshot.md" "$fixture/docs/contracts/catalog-schema-snapshot.md" cp "$root/mkdocs.yml" "$fixture/mkdocs.yml" cp "$root/compose.yaml" "$fixture/compose.yaml" cp "$root/scripts/run-stack.sh" "$fixture/scripts/run-stack.sh" # The fixture keeps the production navigation shape but lacks its canonical first-start page. rm "$fixture/docs/install/first-start.md" if THT_DOCS_VERIFY_ROOT="$fixture" "$root/scripts/verify-workspace-install-docs.sh" --fixtures-only \ >"$fixture/missing-page.out" 2>&1; then echo 'verifier accepted a missing first-start page' >&2 exit 1 fi grep -Fq 'missing required file: docs/install/first-start.md' "$fixture/missing-page.out" || { echo 'missing first-start fixture failed for the wrong reason' >&2 cat "$fixture/missing-page.out" >&2 exit 1 } echo 'workspace installation documentation regression suite passed'