summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-07 01:55:31 +0200
committeruser <user@clank>2026-08-07 01:55:31 +0200
commitcf45e115bcd137020002e84b67da7b00547901b5 (patch)
tree3954101322a281db2c2a739d647331fc33414be1 /tests
parent_idatui_spans: one capturing re.split over the tag pairs instead of finditer+... (diff)
downloadida-tui-cf45e115bcd137020002e84b67da7b00547901b5.tar.gz
ida-tui-cf45e115bcd137020002e84b67da7b00547901b5.tar.xz
ida-tui-cf45e115bcd137020002e84b67da7b00547901b5.zip
Re-apply #5 (lru_cache on the per-line render + Heads built with their opcode bytes already attached) with the graph_minimap scenario's racy SETUP made deterministic: clear _graph_sticky before the second navigation so Space is known to be entering the graph, not leaving it. No assertion changed.
Result: {"status":"keep","total_ms":22980.2,"lg_boot_ms":738.2,"lg_decomp_ms":2401.8,"lg_graph_ms":944.1,"lg_hex_ms":920.6,"lg_index_ms":75.2,"lg_listing_cold_ms":538.5,"lg_listing_warm_ms":411.1,"lg_nav_ms":6813.9,"lg_palette_ms":4.9,"lg_render_ms":221.8,"lg_search_ms":5630.1,"pure_graph_ms":240.7,"sm_boot_ms":537.5,"sm_decomp_ms":595.1,"sm_graph_ms":715.7,"sm_hex_ms":858.8,"sm_index_ms":0,"sm_listing_cold_ms":263.3,"sm_listing_warm_ms":265.3,"sm_nav_ms":335.2,"sm_palette_ms":0.3,"sm_render_ms":271.4,"sm_search_ms":196.5,"fails":0}
Diffstat (limited to 'tests')
-rw-r--r--tests/test_scenarios.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/test_scenarios.py b/tests/test_scenarios.py
index a36ea80..9b2cc7e 100644
--- a/tests/test_scenarios.py
+++ b/tests/test_scenarios.py
@@ -3101,7 +3101,17 @@ async def s_graph_minimap(c: Ctx):
# a big graph, so the overview actually maps to somewhere far away
big = c.find_func(lambda f: f.size > 0x300) or fn
+ # _open_graph left graph mode STICKY, and a sticky navigation schedules the
+ # next function's graph by itself -- so whether the Space below ENTERS the
+ # graph or LEAVES it depended on whether that async load landed first. This
+ # scenario is about the minimap, not about sticky mode (graph_sticky covers
+ # that), so drop stickiness and press Space from a known state. Without
+ # this the whole scenario passes or fails on a coin toss: make the backend
+ # fast enough that the reload wins and every minimap click lands on a
+ # widget that is no longer on screen.
+ app._graph_sticky = False
await c.open(big.addr, "listing")
+ await c.wait(lambda: app._active == "listing", 10)
c.lst.focus()
await c.press("space")
await c.wait(lambda: app._active == "graph" and gv.lay is not None, 60)