a73x

531a96ac

test: e2e — the empty-wall detach leg stops pinning a deadline it cannot fail on

a73x   2026-08-28 19:53

Commit message
test: e2e — the empty-wall detach leg stops pinning a deadline it cannot fail on

test/e2e_09_hosts.sh
Old New
@@ -596,17 +596,20 @@ ok "hosts rm takes the daemon off the wall and ends nothing"
596 # nothing has ever written here, so the run refuses every chord rather 596 # nothing has ever written here, so the run refuses every chord rather
597 # than reading one off it, and `Ctrl-\ d` is the one it honours. 597 # than reading one off it, and `Ctrl-\ d` is the one it honours.
598 # 598 #
599 # Two claims, and the second is the one that catches a fall-through: 599 # One claim, and the sentence is the whole of it: it says `mux: left the
600 # wall`. `detached (session still running)` is what the ordinary road
601 # prints, and on a wall with no session that sentence is a lie about the
602 # user's shells.
600 # 603 #
601 # * the client leaves within a SECOND of the key. The ordinary detach 604 # NOT a deadline. `awaitDetach` bounds the ordinary road at 400ms, so a `d`
602 # waits up to 400ms for a pump's ack, and on this wall there is no 605 # that fell through to it still exits inside any waitexit worth writing: a
603 # pump to ack — a `d` that took the ordinary road would stall for the 606 # bound both branches satisfy asserts nothing and only imports flake — the
604 # whole bound before saying anything. 607 # `waitexit 1000` that used to stand here needed 600ms of fixture teardown
605 # * it says `mux: left the wall`. `detached (session still running)` is 608 # under a loaded Debug build to turn this leg red. Pinning "leaves at once"
606 # what the ordinary road prints, and on a wall with no session that 609 # wants a measurement either side of the run with a threshold under 400ms,
607 # sentence is a lie about the user's shells. 610 # which is a different leg.
608 # 611 #
609 # ...and a third, ahead of both: the empty wall OPENS THE PICKER by itself. 612 # ...and, ahead of it: the empty wall OPENS THE PICKER by itself.
610 # A blank screen is no place to act from, and the list of machines is the 613 # A blank screen is no place to act from, and the list of machines is the
611 # only thing left to act on. Esc there leaves the one-line text standing — 614 # only thing left to act on. Esc there leaves the one-line text standing —
612 # once, so the popup does not come straight back over the answer. 615 # once, so the popup does not come straight back over the answer.
@@ -634,12 +637,12 @@ expect Enter/c new session 20000
634 send \x1b 637 send \x1b
635 settle 500 15000 638 settle 500 15000
636 send \x1cd 639 send \x1cd
637 waitexit 1000 640 waitexit 10000
638 EOF 641 EOF
639 RC=$? 642 RC=$?
640 set -e 643 set -e
641 [ "$RC" -eq 0 ] || { 644 [ "$RC" -eq 0 ] || {
642 echo "e2e FAIL: empty wall: Ctrl-\\ d did not leave within a second (exit $RC):" 645 echo "e2e FAIL: empty wall: Ctrl-\\ d did not leave the empty wall (exit $RC):"
643 cat "$OUT.empc"; echo "--- stderr ---"; cat "$OUT.emcap.err"; exit 1; } 646 cat "$OUT.empc"; echo "--- stderr ---"; cat "$OUT.emcap.err"; exit 1; }
644 # mux's own last word, off its stderr — ptyclient gives the client a real 647 # mux's own last word, off its stderr — ptyclient gives the client a real
645 # stderr file, so this is the process's sentence and not something the 648 # stderr file, so this is the process's sentence and not something the