Replace the single file-structure.md with a stratified layout designed
for AI/agent skill consumption: tables and concrete identifiers over
prose, files loaded on demand, content separated by churn rate.
Layers:
- architecture/ stable structural reference (overview, source-map,
test-map, data-flow)
- patterns/ memory, commands, autocomplete, events, xmpp,
encryption, ui, plugins
- testing/ unit-tests, stubs, functional-tests, bench
- build/ local, docker, ci
- playbooks/ add-command, add-test, add-autocomplete,
add-event-handler, add-encryption
- gotchas.md append-only dated entries (seven seed entries)
- wip/ branch-specific notes; deleted on merge to master
Stable layers describe cproof on master only. In-flight feature
branches (currently feat/ai) get a single file under wip/.
INDEX.md is the entry map with churn labels; SKILL.md is the
always-loaded skill hint pointing to it.
2.8 KiB
2.8 KiB
Test map
Top-level test directories
| Path | Runner | Purpose |
|---|---|---|
tests/unittests/ |
cmocka via make check |
Unit tests with stubbed dependencies. |
tests/functionaltests/ |
custom binary, runs against a real cproof | End-to-end behaviour tests. |
tests/bench/ |
custom benches, one binary per runner | Database / flatfile / long-message benchmarks. |
tests/prof_cmocka.h |
— | Thin cmocka wrapper used by all unit tests. |
tests/unittests/ layout
unittests.c— single test runner. Registers every test viacmocka_unit_test()/cmocka_unit_test_setup_teardown().helpers.c/helpers.h— shared test utilities.test_<topic>.c+test_<topic>.h— paired test files. The header declares each test function; the runner includes the header to register it.- Per-module subdirectories carry stubs for that module's public symbols:
| Stub directory | Stubs for |
|---|---|
tests/unittests/chatlog/ |
src/chatlog.c |
tests/unittests/command/ |
src/command/ |
tests/unittests/config/ |
src/config/ (accounts, cafile, etc.) |
tests/unittests/database/ |
src/database.c |
tests/unittests/event/ |
src/event/ |
tests/unittests/log/ |
src/log.c |
tests/unittests/omemo/ |
src/omemo/ |
tests/unittests/otr/ |
src/otr/ |
tests/unittests/pgp/ |
src/pgp/ |
tests/unittests/plugins/ |
src/plugins/ |
tests/unittests/tools/ |
src/tools/ |
tests/unittests/ui/ |
src/ui/ |
tests/unittests/xmpp/ |
src/xmpp/ |
tests/unittests/unittests/ |
top-level utility stubs |
Branch-specific stubs (e.g. tests/unittests/ai/ on feat/ai) are not
listed here — see wip/ for branch notes.
Each stub file is named stub_<module>.c. See testing/stubs.md for when
to add or extend a stub.
tests/functionaltests/ layout
functionaltests.c— runner.proftest.c/proftest.h— fixture: spawns cproof under PTY, talks XMPP.test_<feature>.c— feature suites: connect, disconnect, message, presence, carbons, roster, history, ping, autoping, lastactivity, software, disco, receipts, rooms, muc, chat_session, export_import.
Functional tests require:
- A test XMPP server reachable from the test harness.
- A pre-baked
.profrc(see recent perf work). - See
testing/functional-tests.mdfor prerequisites and runner flags.
tests/bench/ layout
Each runner is a separate directory + binary:
| Runner | Measures |
|---|---|
bench_runner |
Combined runner for general bench scenarios. |
bench_export_import |
Database export/import throughput. |
bench_failure_modes |
Flatfile parser failure / recovery paths. |
bench_long_messages |
Flatfile parser with very long messages. |
gen_history |
Generates synthetic chat history for benches. |
See testing/bench.md for invocation and interpretation.