aboutsummaryrefslogtreecommitdiffstats
path: root/docs/GRAPH_VIEW.md
diff options
context:
space:
mode:
authorblasty <peter@haxx.in>2026-08-07 21:23:44 +0200
committerblasty <peter@haxx.in>2026-08-07 21:23:44 +0200
commit8ee73fd6522b4670c64bd5a09f253ba35b104c38 (patch)
treeb493fe30664e54f6e0e192cfb1586a37ceda2fe6 /docs/GRAPH_VIEW.md
parentStruct editor: '/' fuzzy-filters the struct list (diff)
downloadida-tui-8ee73fd6522b4670c64bd5a09f253ba35b104c38.tar.gz
ida-tui-8ee73fd6522b4670c64bd5a09f253ba35b104c38.tar.xz
ida-tui-8ee73fd6522b4670c64bd5a09f253ba35b104c38.zip
tests: gate on real signals, not sleeps (117s -> 49s)
The suite spent its time in two kinds of guess. **Flat pauses.** ~140 `pause(d)` calls were 20.4s of the pilot's 62s, and `test_trace_ui` was 13.5s of `pilot.pause(1.0)` out of 19.6s. `Ctx.pause` is now `settle` (`d` is the upper bound, not the cost) and the other suites' sleeps became gates on the thing the check is about. `Ctx.sleep` stays for what a timer really drives. **Textual's keypress path.** `Pilot.press` calls `wait_for_idle` twice per key, which sleeps in 20ms granules until process time stops advancing -- 84ms per keypress here, 23s of the pilot's 43s. `_fixtures.fast_keys()` replaces it with the gate the suites already use: send the keys, then settle. Deleting the heuristic *without* that broke nine checks, so it was doing a job, badly. Four checks turned out to be riding on those sleeps: they read geometry or a repaint (`si.region`, `gv._minimap_rect()`, glyphs off `gv.render_line`, a repaint trace), and a settled app has not necessarily been laid out or painted. They now wait for the frame. The debounced function filter (`set_timer(0.08)`) likewise waits for its effect. Also fixed two waits on signals that never arrive: the comment wait in `rename` carried a `dec.loaded_ea == app._cur.ea` conjunct that cost 9s of timeout and then let the check pass vacuously, and `listing_view` -- the one entry under "Known-flaky" -- waited on `lst.total`, which is true before a single row exists. `--profile` reports, per scenario, seconds settling / waiting / pressing, and names any wait that expired with its line number. It is how the above was found and how the next 20s should be. Verified: 4 full `tests/run.py` runs, 800 passed each, 49.0-49.2s (was 117.4s); 4 consecutive pilot runs, 313 passed each, 21.2s (was 63.7s).
Diffstat (limited to 'docs/GRAPH_VIEW.md')
0 files changed, 0 insertions, 0 deletions