Opening a named pipe that has no writer blocks until one appears, so gen and freshen hung on a tree holding a pipe, and check hung on a listed path that is a pipe on disk. Fixes #189.
gen (through Scanner) and freshen list regular files only; with --follow-symlinks this applies to what the symlink points to. Each skipped entry is logged at verbose level as skipping PATH: not a regular file.
check reports a listed path that is not a regular file with the existing ERROR status and the message not a regular file, without opening it.
The search for extra files skips pipes, sockets and devices by the type of the entry itself, before the symlink handling that #192 reworks next in the same function.
The README Tool Examples say gen and freshen list regular files only.
Not visible in the diff:
makePipe in the tests opens the pipe for writing after 5 seconds, so a regression fails the test instead of hanging the suite. It lets one read through, which is why each symlink test points at a second pipe outside the tree.
A pipe named directly as a gen argument is skipped too, so gen writes a manifest listing no files rather than failing.
Judgement call: the pipe tests build on unix only (//go:build unix), where syscall.Mkfifo exists.
Unverified: sockets and devices are not tested; the tests use pipes.
Model: opus-5-5
Opening a named pipe that has no writer blocks until one appears, so `gen` and `freshen` hung on a tree holding a pipe, and `check` hung on a listed path that is a pipe on disk. Fixes https://git.eeqj.de/sneak/mfer/issues/189.
- `gen` (through `Scanner`) and `freshen` list regular files only; with `--follow-symlinks` this applies to what the symlink points to. Each skipped entry is logged at verbose level as `skipping PATH: not a regular file`.
- `check` reports a listed path that is not a regular file with the existing `ERROR` status and the message `not a regular file`, without opening it.
- The search for extra files skips pipes, sockets and devices by the type of the entry itself, before the symlink handling that https://git.eeqj.de/sneak/mfer/issues/192 reworks next in the same function.
- The README Tool Examples say `gen` and `freshen` list regular files only.
Not visible in the diff:
- `makePipe` in the tests opens the pipe for writing after 5 seconds, so a regression fails the test instead of hanging the suite. It lets one read through, which is why each symlink test points at a second pipe outside the tree.
- A pipe named directly as a `gen` argument is skipped too, so `gen` writes a manifest listing no files rather than failing.
Judgement call: the pipe tests build on unix only (`//go:build unix`), where `syscall.Mkfifo` exists.
Unverified: sockets and devices are not tested; the tests use pipes.
Model: opus-5-5
Opening a named pipe that has no writer blocks, so gen and freshen hung
on a tree holding one, and check hung on a listed path that is a pipe on
disk. gen and freshen now list regular files only (with
--follow-symlinks, what a symlink points to must be one) and name what
they skip with -v. check reports a listed path that is not a regular
file as an error without opening it, and its search for extra files
leaves out pipes, sockets and devices.
Judgement call: the pipe tests build on unix only, where syscall.Mkfifo
exists.
Unverified: sockets and devices are not tested; the tests use pipes.
Model: opus-5-5
Judgement call: a pipe, socket or device named directly to gen is skipped, and gen writes a manifest listing no files, as it does for an empty directory. The issue asks for regular files only and not for a refusal, so this meets its definition of done.
Left for later: check still reports a symlink to a pipe, socket or device as an extra file. #192 sets which symlinks that search reports, and its rule covers this case.
Model: opus-5-5
Review passed.
- Judgement call: a pipe, socket or device named directly to `gen` is skipped, and `gen` writes a manifest listing no files, as it does for an empty directory. The issue asks for regular files only and not for a refusal, so this meets its definition of done.
- Left for later: `check` still reports a symlink to a pipe, socket or device as an extra file. https://git.eeqj.de/sneak/mfer/issues/192 sets which symlinks that search reports, and its rule covers this case.
Model: opus-5-5
clawbot
merged commit e633d3a31b into next2026-10-13 16:39:10 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Opening a named pipe that has no writer blocks until one appears, so
genandfreshenhung on a tree holding a pipe, andcheckhung on a listed path that is a pipe on disk. Fixes #189.gen(throughScanner) andfreshenlist regular files only; with--follow-symlinksthis applies to what the symlink points to. Each skipped entry is logged at verbose level asskipping PATH: not a regular file.checkreports a listed path that is not a regular file with the existingERRORstatus and the messagenot a regular file, without opening it.genandfreshenlist regular files only.Not visible in the diff:
makePipein the tests opens the pipe for writing after 5 seconds, so a regression fails the test instead of hanging the suite. It lets one read through, which is why each symlink test points at a second pipe outside the tree.genargument is skipped too, sogenwrites a manifest listing no files rather than failing.Judgement call: the pipe tests build on unix only (
//go:build unix), wheresyscall.Mkfifoexists.Unverified: sockets and devices are not tested; the tests use pipes.
Model: opus-5-5
Review passed.
genis skipped, andgenwrites a manifest listing no files, as it does for an empty directory. The issue asks for regular files only and not for a refusal, so this meets its definition of done.checkstill reports a symlink to a pipe, socket or device as an extra file. #192 sets which symlinks that search reports, and its rule covers this case.Model: opus-5-5