wrolpi/modules/zim/test
Roland cdcf771ffa kiwix: a corrupt zim must not bring down the whole server
A corrupt or partial *.zim (e.g. an interrupted download) is rejected by
kiwix-manage ("Cannot add zim ..."). start_kiwix_serve.sh could then leave
Kiwix down and reported a misleading "Could not find any Zim files" — and
if the bad zim was the only one, exit 2 killed the service with no restart.

- Import each zim independently; log and skip a failed add so the remaining
  valid zims are still served.
- Always ensure a library.xml exists (empty if needed) and exec kiwix-serve
  unconditionally, so a corrupt/absent zim never stops the server starting.
- Fix the mount-wait loop, which never incremented COUNT (infinite wait
  instead of a 30s timeout).
- Add MEDIA_DIRECTORY override so the script is testable.
- Add Restart=on-failure to wrolpi-kiwix.service (matches wrolpi-api.service)
  so transient failures self-heal.
- New test harness runs the script with fake kiwix-manage/kiwix-serve shims.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 13:06:46 -06:00
..
__init__.py Zim/Kiwix (Wikipedia) feature 2023-07-10 21:30:40 -06:00
test_api.py Postgres -> SQLite hard cutover: the database moves into the media directory. 2026-07-12 14:09:37 -06:00
test_lib.py Postgres -> SQLite hard cutover: the database moves into the media directory. 2026-07-12 14:09:37 -06:00
test_restart_kiwix.py Fixing kiwix restart cmd: missing comma silently concatenated two argv entries. 2026-05-25 20:16:02 -06:00
test_start_kiwix_serve.py kiwix: a corrupt zim must not bring down the whole server 2026-07-20 13:06:46 -06:00
test_zim_downloaders.py Migrating Kiwix downloaders. 2026-05-07 15:54:53 -06:00
test_zim_modeler_loop.py Fixing bug where not all archives were modeled. 2025-12-18 17:19:57 -07:00