summaryrefslogtreecommitdiffstats
path: root/idatui
diff options
context:
space:
mode:
authorblasty <peter@haxx.in>2026-07-26 21:02:47 +0200
committerblasty <peter@haxx.in>2026-07-26 21:02:47 +0200
commitad9bc359f4bca82d8a9b48beb137d2acf544f1da (patch)
tree8da85ba6b01eba886c71aa5637cec01ed048dcf6 /idatui
parentarm: find Thumb entry points from a vector table (Shift+T) (diff)
downloadida-tui-ad9bc359f4bca82d8a9b48beb137d2acf544f1da.tar.gz
ida-tui-ad9bc359f4bca82d8a9b48beb137d2acf544f1da.tar.xz
ida-tui-ad9bc359f4bca82d8a9b48beb137d2acf544f1da.zip
tests: run the scenario suite on a scratch copy, not the tracked target
The suite edits the database — defines code, undefines items, renames, comments — and IDA saves all of it. Running that against targets/echo.i64 meant every run inherited the last one's damage. That cost real time twice. decomp_follow_self "started failing" with no code change, and stayed failing until the .i64 was deleted; an edit-position check looked flaky about one run in three and I nearly reported it as an async race. Both were the database drifting. A suite whose result depends on its own history cannot be trusted to accuse the code — and it had been quietly laundering bad conclusions for however long. Now the suite copies the binary into a temp dir and seeds it from a golden database (<target>.pristine.i64) that nothing ever writes back to. Every run starts from identical bytes; the tracked target is never opened. The golden copy is built once, on first run, by analysing and saving before any scenario runs — so it costs one analysis rather than one per run. Rebuilt automatically if the binary is newer. Verified: two consecutive full runs both 209/0; targets/echo.i64 no longer exists after a run; a deliberately corrupted targets/echo.i64 is ignored completely (11/0 with junk in place, and the junk untouched afterwards); no temp directories leak. The other suites were already clean for the same reason, by different means: test_blob_ui builds a throwaway binary, test_project_ui stages copies, and test_thumb_ui deletes the .i64 before each phase because the T flag and the segment's bitness are saved in it.
Diffstat (limited to 'idatui')
0 files changed, 0 insertions, 0 deletions