diff options
| author | blasty <blasty@local> | 2026-08-07 15:51:00 +0200 |
|---|---|---|
| committer | blasty <blasty@local> | 2026-08-07 15:51:00 +0200 |
| commit | 8887549473c1177619da9088d406792009e72f39 (patch) | |
| tree | a9828172760c22fc58b6ce60861f5341758f6fd5 /tests/test_graph.py | |
| parent | Install ida-codemode from PyPI, not a sibling clone (diff) | |
| download | ida-tui-8887549473c1177619da9088d406792009e72f39.tar.gz ida-tui-8887549473c1177619da9088d406792009e72f39.tar.xz ida-tui-8887549473c1177619da9088d406792009e72f39.zip | |
tools/demo.py: a scripted feature tour, and the RPC bug it found
Ten scenes over the RPC layer: goto, listing scroll, pseudocode, the literal
format ring, follow/back, the graph (zoom, minimap, edge walking), split view,
xrefs, a rename and a comment, the strings/symbols/structs/hex browsers, and
search. It drives the semantic verbs, so prompts are typed character by
character and a recording shows the app being used rather than poked.
--spawn opens its own pane on a COPY of the target (binary plus .i64, so the
analysis is not re-paid) and tears it down afterwards; --sock drives a session
you set up yourself, for control over pane size and zoom. Edits are reverted at
the end, including a re-navigate so the last frame does not still show the
demo's rename. --speed scales every pause, --only runs a subset, --list prints
the scenes.
Writing it found a real bug in the RPC hex verb: it waited for `app.is_hex` to
become true, but backslash TOGGLES the hex view, so the call that leaves hex
could never satisfy its predicate and always timed out after 20s. Any driver
could open the hex view and never close it. It now waits for the mode to flip,
the way toggle_view already did.
Verified by running every scene against a live database and asserting the UI
actually moved -- landed on main, decomp reachable, graph reports 280 blocks,
split toggles off, no modal left open, the rename reaches the database and the
revert removes it. 15/15. Full suite still 788 passed, 0 failed.
Diffstat (limited to 'tests/test_graph.py')
0 files changed, 0 insertions, 0 deletions
