aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-08-06 23:48:04 +0200
committerblasty <blasty@local>2026-08-06 23:48:04 +0200
commit8c9490c0cc1712f61dfdd2efaaee93d33e1825f9 (patch)
treedd8595d8ff6d6694ca4509ed5f19c107fa4ceac4 /README.md
parenttests: deterministic fixtures, and a correction (diff)
downloadida-tui-8c9490c0cc1712f61dfdd2efaaee93d33e1825f9.tar.gz
ida-tui-8c9490c0cc1712f61dfdd2efaaee93d33e1825f9.tar.xz
ida-tui-8c9490c0cc1712f61dfdd2efaaee93d33e1825f9.zip
tests: a guard that actually regresses on the resync storm
The split resync loop (f898350) had no test. Two attempts at one were worthless and are not in this commit: a scroll-based guard passed with the bug reintroduced, and a constructed anchor -- inside the loaded function, outside its mapped span -- skipped, because on this target the map covers the whole function. The real trigger is the race window while the decomp map lags the decompiler re-pointing, which is tedious to force but wide open in split_view's own flow. So split_view counts lookup_funcs across its body and bounds it. Verified both ways, which is the only reason it's worth having: 29,227 calls with the bug put back, under 500 with the fix. The bound is loose because the bug was three orders of magnitude out, not a near miss. 733 checks, 139s.
Diffstat (limited to 'README.md')
-rw-r--r--README.md10
1 files changed, 7 insertions, 3 deletions
diff --git a/README.md b/README.md
index d857989..bc514c5 100644
--- a/README.md
+++ b/README.md
@@ -198,12 +198,16 @@ See `docs/RPC.md` for the full protocol.
`tests/run.py` is the front door — it runs every suite and prints one table:
```sh
-python3 tests/run.py # everything (needs IDA; ~3 min)
-python3 tests/run.py --fast # only the no-IDA suites — ~0.5s, runs anywhere
-python3 tests/run.py --list # what would run, and whether it needs IDA
+python3 tests/run.py --fast # 257 checks, ~0.5s, any python3 — between edits
python3 tests/run.py trace -x # only files matching "trace", stop at first failure
+python3 tests/run.py # all 733 checks, ~2m20s — before a commit
+python3 tests/run.py --list # what would run, and whether it needs IDA
```
+It runs the suites **serially on purpose**: idalib contends hard enough that
+running them 4-up took the suite from 153s to 296s and got three of them killed
+mid-analysis. See the note in `tests/run.py`.
+
Test files come in two kinds and **each one declares which** with a module-level
`NEEDS_IDA` marker (`run.py` reads it without importing the file, and refuses to
run if a file doesn't have one):