Stop the terminal tests reading a pty nobody opened (closes #126)
check / check (push) Waiting to run
check / check (push) Waiting to run
On Linux, pty.Open of github.com/creack/pty v1.1.24 passes the address of a local variable to ioctl as a plain number, through a function call. When Go moved the goroutine's stack in between, the kernel wrote the pty's number to the old place, and pty.Open opened /dev/pts/0, another terminal. secret rm wrote there, and the test read a terminal no program had open, which never ends. Require the commit on the library's main branch that passes a pointer; no release has it yet. Both terminal tests now stop reading when their one-minute context ends, and fail saying what was still waiting. Model: opus-5-5
This commit was merged in pull request #127.
This commit is contained in:
@@ -18,6 +18,18 @@ https://git.eeqj.de/sneak/secret/milestone/12
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-06: `TestRemoveIgnoresTerminalOnStdout` and
|
||||
`TestRemoveAsksAtTerminalOnStdin` no longer wait until Go's test timeout
|
||||
(https://git.eeqj.de/sneak/secret/issues/126). On Linux, `pty.Open` of
|
||||
`github.com/creack/pty` v1.1.24 passed the address of a local variable to the
|
||||
`ioctl` system call as a plain number, through a function call; when Go moved
|
||||
the goroutine's stack in between, the kernel wrote the terminal's number to
|
||||
the old place, and `pty.Open` opened `/dev/pts/0` instead of the terminal it
|
||||
had created. `secret rm` then wrote to that other terminal, and the test read
|
||||
a terminal no program had open, which never ends. `go.mod` now requires the
|
||||
commit on that library's main branch that passes a pointer instead; no release
|
||||
has it yet. Both tests stop reading the terminal when their one-minute context
|
||||
ends and fail saying so.
|
||||
- 2026-10-06: The tests run quickly with the race detector on
|
||||
(https://git.eeqj.de/sneak/secret/issues/120). Most of their time went to
|
||||
deriving keys from passphrases with scrypt, which is slow on purpose. The new
|
||||
|
||||
Reference in New Issue
Block a user