summaryrefslogtreecommitdiff
path: root/test/monkey9p.py
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-30 15:56:43 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:17 -0300
commit007ec29082fcd24764db0405c12f1cdf5638bdca (patch)
tree12cf2d8011eebd8f502e7a072f12869e5a81f449 /test/monkey9p.py
parent8598a5fbe6ffecad46891957356d47a37649e547 (diff)
downloadpardes-007ec29082fcd24764db0405c12f1cdf5638bdca.tar.gz
pardes-007ec29082fcd24764db0405c12f1cdf5638bdca.zip
The 9P monkey's chunked read check allows a live file that changed between its two reads
Seed 131 flagged a command pane's tag: the whole read said `running`, the chunked read on the same open said `exit 0`. A tag is live, not frozen at the open, and the command ended between the reads, so this was a false alarm that did not reproduce on replay. A mismatch now counts only when a third, whole read still differs from the chunks. Seeds 131, 133 and 134 at 3000 steps each run clean. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'test/monkey9p.py')
-rw-r--r--test/monkey9p.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/test/monkey9p.py b/test/monkey9p.py
index fd8c80fa..87e386b3 100644
--- a/test/monkey9p.py
+++ b/test/monkey9p.py
@@ -1616,7 +1616,10 @@ def chunked_equals_whole(ctx, res):
whole_n, chunk_n = dir_names(whole), dir_names(chunked)
if whole_n != chunk_n:
return f'{path}: whole {whole_n} != chunked({size}) {chunk_n}'
- elif whole != chunked:
+ elif whole != chunked and w.read_all(fid) != chunked:
+ # A live file (a tag says `running`, then `exit 0`) may change
+ # between the two reads: only chunks that no whole read matches,
+ # read again, are a chunking fault.
return f'{path}: whole {whole[:200]!r} != chunked({size}) {chunked[:200]!r}'
finally:
w.clunk(fid)