Drive a real PTY and a real socket through the terminal pump

TestKlusterServices
Shipped
September 3, 2026 at 5:50 PM UTC
Author
Kamo
Commit
e9274bc

The existing tests pin argv and framing in isolation; these four prove the pieces actually move bytes. A shell is forked under a genuine pty.fork and pumped over a socketpair, so what runs is the select loop, the frame decode on the way in, the encode on the way out, the resize ioctl and the EOF handling — the agent's whole half of the protocol. The one thing stubbed is `su - <user>`, which needs root and a provisioned account; the spawner is injected to exec a plain shell instead. The EIO case is the one worth having. A PTY signals its child's exit with EIO on read rather than a clean EOF, and getting that wrong turns a normal `exit` into an exception — the browser would see a crash where it should see a close. 111 tests pass.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing