diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-28 17:27:30 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:15 -0300 |
| commit | 63d584a0ba7806759f7139e87f45e411c9a1573d (patch) | |
| tree | 00ec42e25dfcc0497162511041cc88d757ff9190 /test | |
| parent | cf45be79a5ab96d3b81078e7e5e2ba58bd5e5cee (diff) | |
| download | pardes-63d584a0ba7806759f7139e87f45e411c9a1573d.tar.gz pardes-63d584a0ba7806759f7139e87f45e411c9a1573d.zip | |
A Save the host cannot do fails the 9P write that asked for it, and the log names the path and why
The write answered ok and the pane stayed dirty, with `save: AccessDenied` on its message row: a script saw success. The failure now says `Save <path>: <why>`, and a 9P write that waited on the save fails with EIO and that text, logged as an err record.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'test')
| -rw-r--r-- | test/fs.py | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -360,6 +360,16 @@ def discovery(binary, embedded=False): # Through a mount both read as EINVAL; the log says which and why. assert f'err {scratch} addr: no match for regexp\n'.encode() in client.read('/log') client.remove(f'/pane/{scratch}') + # A save the host cannot do fails the write that asked for it, + # and the log's err record names the path and why. + unsaved = new_pane(client, b'unsaved\n') + try: + client.write(f'/pane/{unsaved}/ctl', b'Save /nonexistent-pardes-dir/x.txt\n') + raise AssertionError('a Save into a missing directory succeeded') + except OSError as refused: + assert 'Save /nonexistent-pardes-dir/x.txt: ' in str(refused), refused + assert f'err {unsaved} ctl: Save /nonexistent-pardes-dir/x.txt: '.encode() in client.read('/log'), client.read('/log') + client.remove(f'/pane/{unsaved}') print('9P discovery: listing/stat/find are inert; new, remove, look, exec, name, sel, log, ctl lock, focus, the ctl split and commands behave') |
