mirror of
https://github.com/obra/superpowers.git
synced 2026-08-16 20:06:43 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 99f9f00869 |
@@ -22,6 +22,11 @@ head=$3
|
|||||||
git rev-parse --verify --quiet "$base" >/dev/null || { echo "bad BASE: $base" >&2; exit 2; }
|
git rev-parse --verify --quiet "$base" >/dev/null || { echo "bad BASE: $base" >&2; exit 2; }
|
||||||
git rev-parse --verify --quiet "$head" >/dev/null || { echo "bad HEAD: $head" >&2; exit 2; }
|
git rev-parse --verify --quiet "$head" >/dev/null || { echo "bad HEAD: $head" >&2; exit 2; }
|
||||||
|
|
||||||
|
# Range guards (exit 3): a wrong-branch HEAD yields a range that is empty or
|
||||||
|
# not rooted at BASE; either would silently produce a bogus review package.
|
||||||
|
git merge-base --is-ancestor "$base" "$head" || { echo "HEAD is not a descendant of BASE: ${base}..${head}" >&2; exit 3; }
|
||||||
|
[ "$(git rev-list --count "${base}..${head}")" -gt 0 ] || { echo "empty commit range: ${base}..${head}" >&2; exit 3; }
|
||||||
|
|
||||||
if [ $# -eq 4 ]; then
|
if [ $# -eq 4 ]; then
|
||||||
out=$4
|
out=$4
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -165,6 +165,30 @@ PLAN
|
|||||||
echo " got: $rp_explicit"
|
echo " got: $rp_explicit"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --- range guards: BASE must be an ancestor of HEAD, range must be non-empty ---
|
||||||
|
local divergent
|
||||||
|
divergent="$(cd "$repo" && git "${git_id[@]}" commit-tree 'HEAD~1^{tree}' -p 'HEAD~1' -m divergent)"
|
||||||
|
rc=0
|
||||||
|
local guard_err
|
||||||
|
guard_err="$(cd "$repo" && "$SDD_SCRIPTS/review-package" plan-a.md "$divergent" HEAD 2>&1 >/dev/null)" || rc=$?
|
||||||
|
if [[ "$rc" -eq 3 && "$guard_err" == *"not a descendant"* ]]; then
|
||||||
|
pass "review-package rejects a BASE that is not an ancestor of HEAD with exit 3"
|
||||||
|
else
|
||||||
|
fail "review-package rejects a BASE that is not an ancestor of HEAD with exit 3"
|
||||||
|
echo " exit: $rc"
|
||||||
|
echo " stderr: $guard_err"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rc=0
|
||||||
|
guard_err="$(cd "$repo" && "$SDD_SCRIPTS/review-package" plan-a.md HEAD HEAD 2>&1 >/dev/null)" || rc=$?
|
||||||
|
if [[ "$rc" -eq 3 && "$guard_err" == *"empty commit range"* ]]; then
|
||||||
|
pass "review-package rejects an empty BASE..HEAD range with exit 3"
|
||||||
|
else
|
||||||
|
fail "review-package rejects an empty BASE..HEAD range with exit 3"
|
||||||
|
echo " exit: $rc"
|
||||||
|
echo " stderr: $guard_err"
|
||||||
|
fi
|
||||||
|
|
||||||
# --- Worktree isolation: a linked worktree resolves its own workspace ---
|
# --- Worktree isolation: a linked worktree resolves its own workspace ---
|
||||||
local wt="$TEST_ROOT/wt"
|
local wt="$TEST_ROOT/wt"
|
||||||
( cd "$repo" && git worktree add -q "$wt" -b wt-feature )
|
( cd "$repo" && git worktree add -q "$wt" -b wt-feature )
|
||||||
|
|||||||
Reference in New Issue
Block a user