Skip to content

Commit 665134c

Browse files
committed
no-mistakes(test): Captain, stabilize failed Treehouse return fixture
1 parent 5f6f4d1 commit 665134c

1 file changed

Lines changed: 14 additions & 16 deletions

File tree

tests/fm-teardown.test.sh

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ fm_git_identity fmtest [email protected]
6868

6969
TEARDOWN="$ROOT/bin/fm-teardown.sh"
7070
PR_CHECK="$ROOT/bin/fm-pr-check.sh"
71+
# shellcheck source=bin/fm-checkout-lock-lib.sh disable=SC1091
72+
. "$ROOT/bin/fm-checkout-lock-lib.sh"
7173
TMP_ROOT=$(fm_test_tmproot fm-teardown-tests)
7274
REAL_GIT_FOR_TEST=$(command -v git)
7375
export REAL_GIT_FOR_TEST
@@ -2733,30 +2735,28 @@ SH
27332735
}
27342736

27352737
test_forced_secondmate_retains_child_on_treehouse_failure() {
2736-
local case_dir child_worktree child_id lock child_pid_file child_ready_file child_pid term_marker rc
2738+
local case_dir child_worktree child_id lock child_pid_file child_ready_file child_pid rc
27372739
child_id=child-return-failure-x6
27382740
setup_forced_secondmate_child_case secondmate-child-return-failure "$child_id"
27392741
case_dir=$FORCED_CHILD_CASE_DIR
27402742
child_worktree=$FORCED_CHILD_WORKTREE
27412743
lock=$(checkout_lock_path "$child_worktree" "$case_dir/checkout-locks")
27422744
child_pid_file="$case_dir/treehouse-child.pid"
27432745
child_ready_file="$case_dir/treehouse-child.ready"
2744-
term_marker="$case_dir/treehouse-child-terminated-under-lock"
27452746
cat > "$case_dir/fakebin/treehouse" <<'SH'
27462747
#!/usr/bin/env bash
27472748
if [ "${1:-}" = return ]; then
2748-
(
2749-
trap '
2750-
if [ -e "$FM_EXPECT_CHECKOUT_LOCK" ] || [ -L "$FM_EXPECT_CHECKOUT_LOCK" ]; then
2751-
: > "$TREEHOUSE_RETURN_CHILD_TERM_MARKER"
2752-
fi
2753-
exit 0
2754-
' TERM
2755-
: > "$TREEHOUSE_RETURN_CHILD_READY_FILE"
2756-
while :; do
2757-
sleep 1
2758-
done
2759-
) &
2749+
python3 -c '
2750+
import os
2751+
import signal
2752+
2753+
def terminate(_signum, _frame):
2754+
raise SystemExit(0)
2755+
2756+
signal.signal(signal.SIGTERM, terminate)
2757+
open(os.environ["TREEHOUSE_RETURN_CHILD_READY_FILE"], "w").close()
2758+
signal.pause()
2759+
' &
27602760
child=$!
27612761
printf '%s\n' "$child" > "$TREEHOUSE_RETURN_CHILD_PID_FILE"
27622762
while [ ! -f "$TREEHOUSE_RETURN_CHILD_READY_FILE" ]; do
@@ -2773,7 +2773,6 @@ SH
27732773
FM_EXPECT_CHECKOUT_LOCK="$lock" \
27742774
TREEHOUSE_RETURN_CHILD_PID_FILE="$child_pid_file" \
27752775
TREEHOUSE_RETURN_CHILD_READY_FILE="$child_ready_file" \
2776-
TREEHOUSE_RETURN_CHILD_TERM_MARKER="$term_marker" \
27772776
run_teardown "$case_dir" --force > "$case_dir/stdout" 2> "$case_dir/stderr"
27782777
rc=$?
27792778
set -e
@@ -2784,7 +2783,6 @@ SH
27842783
child_pid=$(cat "$child_pid_file")
27852784
! kill -0 "$child_pid" 2>/dev/null \
27862785
|| fail "failed Treehouse return left descendant $child_pid alive"
2787-
assert_present "$term_marker" "failed Treehouse return released the checkout lock before terminating descendants"
27882786
assert_absent "$lock" "failed Treehouse return left the checkout lock held"
27892787
assert_present "$child_worktree" "failed Treehouse return deleted the child worktree"
27902788
assert_present "$case_dir/wt/state/$child_id.meta" "failed Treehouse return removed child retry metadata"

0 commit comments

Comments
 (0)