- Dankserver stack: RomM, Copyparty, Calibre-Web, node-exporter - Dankclaw stack: Gluetun VPN (SearXNG tunnel), SearXNG+Valkey, ComfyUI (CPU backend), OpenWebUI, Hermes, Gitea+Postgres (migrated), Caddy reverse proxy, Grafana+Prometheus+Loki+Alloy observability - Caddyfiles with .local hostname convention and basicauth homepage - bind-mount storage policy, no named volumes - deploy.sh mirroring vllmScripts git workflow (push -> pull -> restart -> health) - docs/ Obsidian vault: per-service docs from frank-default-small research subagents (promtail EOL -> Alloy; gitea SECRET_KEY preservation; ComfyUI --cpu) - bats test suite at 6 seams — 22 tests green
1.2 KiB
1.2 KiB
Testing Policy
This repository tests its configuration at defined seams. The tests run with bats; run them with ./tests/run.sh before every push.
Seams Under Test
| Seam | File | What it asserts |
|---|---|---|
| Compose validity | tests/compose_validity.bats |
YAML parses, services have images, no named volumes |
| Env consistency | tests/env_consistency.bats |
every ${VAR} is defined in .env.example; no real secrets; the live gitea password never appears |
| Caddyfile validity | tests/caddyfile.bats |
per-host Caddyfile, .local convention, balanced braces, basic auth present |
| Docs completeness | tests/docs_completeness.bats |
every compose service has a docs page; index links every page |
| Script syntax | tests/scripts_syntax.bats |
bash -n clean, executable bits, shellcheck when available |
| Deployment flow | tests/deployment_flow.bats |
deploy.sh exists, targets known, SSH reachable (skips offline) |
Red-Green
Tests are written first. A failing test means the seam is not satisfied; the config change that makes it pass is the only acceptable fix. No --no-verify, no deleting tests without approval.