summaryrefslogtreecommitdiff
path: root/test/appearance_gallery.py
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-20 00:36:50 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:14 -0300
commitc1990b3e6e196ad41379aa432bf3ccca8a65d9f0 (patch)
treed7ad5afe559f7f56464b14c3122242fa3f16399b /test/appearance_gallery.py
parent717afaf3177a2e0925b18ae3445119efe808b129 (diff)
downloadpardes-c1990b3e6e196ad41379aa432bf3ccca8a65d9f0.tar.gz
pardes-c1990b3e6e196ad41379aa432bf3ccca8a65d9f0.zip
Flatten the 9P control tree and move it out of fs.zig
The served tree loses the self/ level: /index /ctl /new /log /screen /listeners /pane/<n>/... /os, with /src only in -Dembed-sources=true builds (default off, on for esp32p4). ctl speaks the editor's own language with two lowercase verbs, look TEXT and exec TEXT, plus acme's addr verbs; the new/ factory directory becomes one clone file; cons is gone (exec Msg); name and sel are files; stats report real lengths, modes and mtimes; /log streams pane new/del/rename/save events. The tree code lives in src/ninep/ (tree, pane, ctl, addr, pty, events, screen, sources); fs.zig keeps host access, mounts, resolution and find/grep. Same engine and transports. README (fs-help.txt) and docs rewritten; tests updated and extended. Co-Authored-By: Claude Fable 5.1 <[email protected]>
Diffstat (limited to 'test/appearance_gallery.py')
-rw-r--r--test/appearance_gallery.py26
1 files changed, 13 insertions, 13 deletions
diff --git a/test/appearance_gallery.py b/test/appearance_gallery.py
index 7779efa9..0fa12136 100644
--- a/test/appearance_gallery.py
+++ b/test/appearance_gallery.py
@@ -80,21 +80,21 @@ def run(args):
before = set(panes(client))
command(client, source, 'Newcol')
right = require(wait_for(lambda: next((s for s in panes(client) if s not in before), None)), 'right column missing')
- client.write(f'/self/pane/{right}/ctl', f'name {root / "Review"}\n'.encode())
- client.write(f'/self/pane/{right}/body', PREFERENCE_NOTES if args.theme_selector else NOTES, truncate=True)
- client.write(f'/self/pane/{right}/ctl', b'clean\n')
+ client.write(f'/pane/{right}/name', f'{root / "Review"}\n'.encode())
+ client.write(f'/pane/{right}/body', PREFERENCE_NOTES if args.theme_selector else NOTES, truncate=True)
+ client.write(f'/pane/{right}/ctl', b'clean\n')
before = set(panes(client))
command(client, right, 'Tty')
terminal = require(wait_for(lambda: next((s for s in panes(client) if s not in before), None)), 'terminal missing')
- client.write(f'/self/pane/{terminal}/pty/data', b"PS1='$ '; printf '\\033[2J\\033[H\\033[1;36mPardes workspace\\033[0m\\n\\n'; printf 'Agave source: read-only\\nTerminal: ready\\n\\n'; printf '\\033[32mSmall touches. Same workflow.\\033[0m\\n'\r")
- require(wait_for(lambda: b'Small touches. Same workflow.' in client.read(f'/self/pane/{terminal}/body')), 'terminal output missing')
+ client.write(f'/pane/{terminal}/pty/data', b"PS1='$ '; printf '\\033[2J\\033[H\\033[1;36mPardes workspace\\033[0m\\n\\n'; printf 'Agave source: read-only\\nTerminal: ready\\n\\n'; printf '\\033[32mSmall touches. Same workflow.\\033[0m\\n'\r")
+ require(wait_for(lambda: b'Small touches. Same workflow.' in client.read(f'/pane/{terminal}/body')), 'terminal output missing')
def config_report():
before = set(panes(client))
command(client, right, 'Config')
pane = require(wait_for(lambda: next((s for s in panes(client) if s not in before), None)), 'Config output missing')
- text = client.read(f'/self/pane/{pane}/body').decode()
- client.write(f'/self/pane/{pane}/ctl', b'del\n')
+ text = client.read(f'/pane/{pane}/body').decode()
+ client.write(f'/pane/{pane}/ctl', b'exec Del\n')
return text
settings = config_report()
@@ -135,7 +135,7 @@ def run(args):
command(client, right, 'Theme ' + theme)
if args.theme_selector:
# Keep both quiet active gutter ink and vivid comments in view.
- client.write(f'/self/pane/{source}/ctl', f'look {source_path}:117\n'.encode())
+ client.write(f'/pane/{source}/ctl', f'look {source_path}:117\n'.encode())
take_frame('classic-' + theme)
if args.theme_selector:
frame = client.screen()
@@ -162,7 +162,7 @@ def run(args):
command(client, right, 'ThemeSel')
selector = require(wait_for(lambda: next((s for s in panes(client) if s not in before), None)),
'ThemeSel missing')
- body = client.read(f'/self/pane/{selector}/body').decode()
+ body = client.read(f'/pane/{selector}/body').decode()
native, legacy = body.split('# Legacy and imported themes', 1)
for theme in ('forge_black', 'forge_soft', 'orchard_black'):
require('Theme ' + theme + '\n' in native, 'native contrast variant below legacy heading')
@@ -171,14 +171,14 @@ def run(args):
'ThemeSel did not open at native first entry')
take_frame('theme-selector')
report['native_themes_first'] = True
- client.write(f'/self/pane/{selector}/ctl', b'del\n')
+ client.write(f'/pane/{selector}/ctl', b'exec Del\n')
command(client, terminal, 'Collapse')
for pet in (() if args.skip_pets else ('cat', 'frog', 'off')):
command(client, right, 'Pet ' + pet)
settings = config_report()
require('Pet: ' + pet + '\n' in settings, 'pet setting not applied')
# Returning focus to the source closes all transient report state.
- client.write(f'/self/pane/{source}/ctl', f'look {source_path}:1\n'.encode())
+ client.write(f'/pane/{source}/ctl', f'look {source_path}:1\n'.encode())
take_frame('pet-' + pet)
if pet != 'off':
frame = client.screen()
@@ -194,9 +194,9 @@ def run(args):
require(band_digest('pet-' + pet) != band_digest('pet-' + pet + '-later'),
'pet did not animate in workspace tag')
report['pets'].append(pet)
- require(client.read(f'/self/pane/{source}/body') == original == source_path.read_bytes(), 'Agave source changed')
+ require(client.read(f'/pane/{source}/body') == original == source_path.read_bytes(), 'Agave source changed')
report['source_unchanged'] = True
- client.write(f'/self/pane/{terminal}/pty/data', b'exit\r')
+ client.write(f'/pane/{terminal}/pty/data', b'exit\r')
(root / 'report.json').write_text(json.dumps(report, indent=2))
print(json.dumps(report, indent=2))