diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-14 21:26:47 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-09-15 17:24:42 -0300 |
| commit | a624a56e289e4a02a411f83741f0f2c9fc0f0b2e (patch) | |
| tree | b87e3ca10dd1c4417112164f792b5da1e26de0a6 /test/fs.py | |
| parent | 95681ff7017b8a9e4c8f9fa6a7371d1233432f2f (diff) | |
| download | pardes-a624a56e289e4a02a411f83741f0f2c9fc0f0b2e.tar.gz pardes-a624a56e289e4a02a411f83741f0f2c9fc0f0b2e.zip | |
Add Linux Tty9p mounted terminals and forward raw TTY keys
Diffstat (limited to 'test/fs.py')
| -rw-r--r-- | test/fs.py | 40 |
1 files changed, 39 insertions, 1 deletions
@@ -122,6 +122,41 @@ def execute(client, serial, command): client.write(f'/self/pane/{serial}/event', f'MX0 {len(text)}\n'.encode()) +def discovery(binary): + with tempfile.TemporaryDirectory(prefix='pardes-discovery-') as directory: + with session(binary, Path(directory), 'discovery') as (client, _): + before = client.read('/self/index') + entries = client.list('/self/new') + assert {'README', 'ctl', 'body', 'addr', 'data', 'event'} <= set(entries) + guide = client.read('/self/README') + assert guide == client.read('/self/new/README') + assert b'Each open creates a separate pane' in guide + # Walk and stat each entry, as a filesystem browser does, without open. + from ninep import string + for name in entries: + client.fid += 1 + fid = client.fid + client.rpc(110, struct.pack('<IIH', 1, fid, 3) + + string('self') + string('new') + string(name)) + try: + client.rpc(124, struct.pack('<I', fid)) + finally: + client.close(fid) + assert client.read('/self/index') == before, 'browsing created a pane' + first = int(client.read('/self/new/ctl').split()[0]) + second = int(client.read('/self/new/ctl').split()[0]) + assert first != second + client.write(f'/self/pane/{first}/body', b'first pane', truncate=True) + assert client.read(f'/self/pane/{first}/body') == b'first pane' + assert client.read(f'/self/pane/{second}/body') == b'' + before_ids = set(client.list('/self/pane')) + client.write('/self/new/body', b'created with text', truncate=True) + made = set(client.list('/self/pane')) - before_ids + assert len(made) == 1 + assert client.read('/self/pane/' + made.pop() + '/body') == b'created with text' + print('9P discovery: listing/stat/README are inert; opens create independent panes') + + def test(binary, quic=False): started = time.monotonic() for options, message in [ @@ -549,6 +584,9 @@ def quic_test(binary): if __name__ == '__main__': + if len(sys.argv) == 3 and sys.argv[2] == '--discovery': + discovery(str(Path(sys.argv[1]).resolve())) + raise SystemExit(0) if len(sys.argv) not in [2, 3] or (len(sys.argv) == 3 and sys.argv[2] != '--quic'): - raise SystemExit('usage: fs.py <pardes> [--quic]') + raise SystemExit('usage: fs.py <pardes> [--quic | --discovery]') test(str(Path(sys.argv[1]).resolve()), quic=len(sys.argv) == 3) |
