| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/usr/bin/env bash
- # Tests for the SDD workspace: scripts/sdd-workspace resolves a self-ignoring
- # working-tree directory for SDD artifacts, and the SDD scripts write into it.
- set -euo pipefail
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
- REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
- SDD_SCRIPTS="$REPO_ROOT/skills/subagent-driven-development/scripts"
- FAILURES=0
- TEST_ROOT=""
- pass() { echo " [PASS] $1"; }
- fail() {
- echo " [FAIL] $1"
- FAILURES=$((FAILURES + 1))
- }
- cleanup() {
- if [[ -n "$TEST_ROOT" && -d "$TEST_ROOT" ]]; then
- rm -rf "$TEST_ROOT"
- fi
- }
- main() {
- echo "=== Test: sdd-workspace ==="
- TEST_ROOT="$(mktemp -d)"
- trap cleanup EXIT
- # Resolve repo to its physical path so string comparisons match the
- # helper's output (git rev-parse --show-toplevel resolves symlinks; on
- # macOS mktemp lives under /var -> /private/var).
- git init -q -b main "$TEST_ROOT/repo"
- local repo
- repo="$(cd "$TEST_ROOT/repo" && git rev-parse --show-toplevel)"
- local dir
- dir="$(cd "$repo" && "$SDD_SCRIPTS/sdd-workspace")"
- if [[ "$dir" == "$repo/.superpowers/sdd" ]]; then
- pass "prints <repo-root>/.superpowers/sdd"
- else
- fail "prints <repo-root>/.superpowers/sdd"
- echo " got: $dir"
- fi
- if [[ -f "$repo/.superpowers/sdd/.gitignore" && "$(cat "$repo/.superpowers/sdd/.gitignore")" == "*" ]]; then
- pass "self-ignoring .gitignore created with '*'"
- else
- fail "self-ignoring .gitignore created with '*'"
- fi
- printf 'x\n' > "$repo/.superpowers/sdd/artifact.md"
- local status
- status="$(cd "$repo" && git status --porcelain)"
- if [[ -z "$status" ]]; then
- pass "workspace invisible to git status"
- else
- fail "workspace invisible to git status"
- echo " status: $status"
- fi
- ( cd "$repo" && git add -A )
- local staged
- staged="$(cd "$repo" && git diff --cached --name-only)"
- if [[ -z "$staged" ]]; then
- pass "git add -A does not stage the workspace"
- else
- fail "git add -A does not stage the workspace"
- echo " staged: $staged"
- fi
- echo ""
- if [[ "$FAILURES" -ne 0 ]]; then
- echo "FAILED: $FAILURES assertion(s)."
- exit 1
- fi
- echo "PASS"
- }
- main "$@"
|