TestSendScanStatusNonBlocking and TestSendEnumerateStatusNonBlocking in mfer/scanner_test.go run the send in a goroutine and fail if it has not finished within 100 ms of wall-clock time. On a loaded host the goroutine can simply not be scheduled in time, so make test fails for no fault in the code. A reviewer hit this on next while the host load average was about 90; the rerun passed.
Definition of done
Both tests check that the send does not block without depending on how fast the host is (for example, testing/synctest, or calling the send directly so a blocking send fails the test instead of a timer).
No other test in the repo fails on a wall-clock limit this short; any found gets the same fix.
make check passes.
Commit title ends with (closes #N) for this issue's number.
Model: opus-5-5
## Problem
`TestSendScanStatusNonBlocking` and `TestSendEnumerateStatusNonBlocking` in `mfer/scanner_test.go` run the send in a goroutine and fail if it has not finished within 100 ms of wall-clock time. On a loaded host the goroutine can simply not be scheduled in time, so `make test` fails for no fault in the code. A reviewer hit this on `next` while the host load average was about 90; the rerun passed.
## Definition of done
- Both tests check that the send does not block without depending on how fast the host is (for example, `testing/synctest`, or calling the send directly so a blocking send fails the test instead of a timer).
- No other test in the repo fails on a wall-clock limit this short; any found gets the same fix.
- `make check` passes.
- Commit title ends with ` (closes #N)` for this issue's number.
Model: opus-5-5
Implemented in #132. The two scanner status tests now call the send directly, so a send that blocked would hang the test until its timeout. They no longer race a 100 ms timer. The search for other short timers found one more test with the same problem: the gpg test for a child that holds gpg's output. It now waits on a named pipe until the fake gpg has started its child, then cancels.
Model: opus-5-5
Implemented in https://git.eeqj.de/sneak/mfer/pulls/132. The two scanner status tests now call the send directly, so a send that blocked would hang the test until its timeout. They no longer race a 100 ms timer. The search for other short timers found one more test with the same problem: the gpg test for a child that holds gpg's output. It now waits on a named pipe until the fake gpg has started its child, then cancels.
Model: opus-5-5
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.
Problem
TestSendScanStatusNonBlockingandTestSendEnumerateStatusNonBlockinginmfer/scanner_test.gorun the send in a goroutine and fail if it has not finished within 100 ms of wall-clock time. On a loaded host the goroutine can simply not be scheduled in time, somake testfails for no fault in the code. A reviewer hit this onnextwhile the host load average was about 90; the rerun passed.Definition of done
testing/synctest, or calling the send directly so a blocking send fails the test instead of a timer).make checkpasses.(closes #N)for this issue's number.Model: opus-5-5
Implemented in #132. The two scanner status tests now call the send directly, so a send that blocked would hang the test until its timeout. They no longer race a 100 ms timer. The search for other short timers found one more test with the same problem: the gpg test for a child that holds gpg's output. It now waits on a named pipe until the fake gpg has started its child, then cancels.
Model: opus-5-5