summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-07-06 13:09:16 -0300
committerGabriel Schneider <[email protected]>2026-08-01 15:02:07 -0300
commita9bc331ab74f12b6b11fa6578d829d0da50ed636 (patch)
tree15a142314ba0a44c623e423502a26a6208250a02 /test
parentde4def3548a6729b0dfd2120495a61beef8c8c2c (diff)
downloadpardes-a9bc331ab74f12b6b11fa6578d829d0da50ed636.tar.gz
pardes-a9bc331ab74f12b6b11fa6578d829d0da50ed636.zip
fix drag-select release crash: the 64-slot effect ring overflowed when one update emitted a big selection exec (emitWrite 64-byte chunks + padOutputBelowEdits CRs) and the emit assert panicked. Effects queue is now a growable ArrayList FIFO (payloads stay inline values); guard the two other Buf(256) asserts reachable from look (spawn cwd >256 -> error.PathTooLong in newShell, >256-char url skipped). New snap exec-bigdrag: giant middle-drag exec on a 60x200 grid, panicked before, alive-marker golden after.
Diffstat (limited to 'test')
-rw-r--r--test/snapshots/exec-bigdrag.golden61
-rw-r--r--test/snapshots/exec-bigdrag.snap40
2 files changed, 101 insertions, 0 deletions
diff --git a/test/snapshots/exec-bigdrag.golden b/test/snapshots/exec-bigdrag.golden
new file mode 100644
index 00000000..613bb342
--- /dev/null
+++ b/test/snapshots/exec-bigdrag.golden
@@ -0,0 +1,61 @@
+== snap alive grid=200x60 cursor=104,37
+|Kill Newcol Tutor Debug Colors NextColor Dump
+| nm /tmp/pardes-snap/exec-bigdrag/cwd Del nm /tmp/pardes-snap/exec-bigdrag/cwd Del
+| bash: line: command not found
+| big.txt
+| bash: 4line: command not found
+|
+| bash: 15line: command not found
+|
+| bash: 726line: command not found
+|
+| bash: 2737line: command not found
+|
+| bash: 2748line: command not found
+|
+| bash: e: command not found
+|
+| bash: ne: command not found
+|
+| bash: ine: command not found
+|
+| bash: line: command not found
+|
+| bash: 2line: command not found
+|
+| bash: 13line: command not found
+|
+| bash: 824line: command not found
+|
+| bash: 2835line: command not found
+|
+| bash: 2846line: command not found
+| nm /tmp/pardes-snap/exec-bigdrag/cwd Del
+| bash: e: command not found
+| big.txt
+| bash: ne: command not found
+|
+| bash: ine: command not found
+| echo alive-o''k
+| bash: line: command not found
+|
+| bash: 0line: command not found
+|
+| bash: 11line: command not found
+|
+| bash: 922line: command not found
+|
+| bash: 2933line: command not found
+|
+| bash: 2944line: command not found
+|
+| bash: e: command not found
+|
+| bash: ne: command not found
+|
+| bash: ine: command not found
+|
+| bash: line: command not found
+|
+| alive-ok
+|
diff --git a/test/snapshots/exec-bigdrag.snap b/test/snapshots/exec-bigdrag.snap
new file mode 100644
index 00000000..dae92205
--- /dev/null
+++ b/test/snapshots/exec-bigdrag.snap
@@ -0,0 +1,40 @@
+# a giant accidental middle-drag: the whole selection is executed, chunked
+# into 64-byte write effects in ONE update — this used to burst the fixed
+# 64-slot effect ring and panic the core (assert in emit). Needs a big grid:
+# the selection must exceed 64*64 bytes, more than any 30x100 pane can hold.
+lines big.txt 3000
+start 60 200
+wait 8000 big.txt
+stable 500 20000
+press left 105 8
+release left 105 8
+stable 300 5000
+key i
+text tr -d '\n' < big.txt
+key esc
+settle 400
+press middle 105 8
+drag middle 126 8
+release middle 126 8
+stable 800 30000
+# the accidental sweep over the full-height right pane, then release
+press middle 105 4
+drag middle 150 30
+drag middle 198 58
+release middle 198 58
+settle 500
+stable 800 30000
+# still alive: type and execute a marker command
+press left 105 40
+release left 105 40
+stable 300 5000
+key i
+text echo alive-o''k
+key esc
+settle 300
+press middle 105 40
+drag middle 119 40
+release middle 119 40
+wait 10000 alive-ok
+stable 800 20000
+snap alive