erplibre/test
Mathieu Benoit 4b6de55f30 [ADD] migration: keep the previous log when a run restarts
The progression log lives at one path and the next migration writes over it.
Restarting therefore erased everything known about the run before — which
steps passed, which modules were missing, how long each took — and that is
exactly what someone looks for after having had to restart.

Both answers that discard the progression now copy it aside first, named after
the origin database and the moment of the copy, so two attempts on the same
database do not cover each other and a file moved out of its folder still says
what it is. Partial replays keep the log, so they archive nothing.

It lands under private/, not beside the original: reinstalling wipes
.venv.erplibre/ and would take the history with it.

Two copies in the same second overwrote each other in silence — undoing the
very loss this prevents. The second one is numbered now, and the test that
had skipped that case asserts it.

Checked on the real 51 KB log from the VM: 18 states copied unchanged, the
name carries the database and the timestamp, and a log with no state at all is
not archived. 12 tests.

--- FR ---

Le journal de progression vit à un seul endroit et la migration suivante écrit
par-dessus. Recommencer effaçait donc tout ce qu'on savait de la tentative
précédente — quels paliers étaient passés, quels modules manquaient, combien
de temps chacun avait pris — soit exactement ce qu'on cherche après avoir dû
recommencer.

Les deux réponses qui jettent la progression la copient désormais d'abord,
sous un nom portant la base d'origine et l'instant de la copie, pour que deux
tentatives sur la même base ne se recouvrent pas et qu'un fichier sorti de son
dossier se décrive encore. Une reprise partielle garde le journal, donc
n'archive rien.

La copie va sous private/, pas à côté de l'originale : une réinstallation
efface .venv.erplibre/ et emporterait l'historique avec elle.

Deux copies dans la même seconde s'écrasaient en silence — annulant la perte
même qu'on évite. La seconde est numérotée, et le test qui sautait ce cas
l'affirme.

Vérifié sur le vrai journal de 51 Ko de la VM : 18 états copiés à l'identique,
le nom porte la base et l'horodatage, et un journal sans aucun état n'est pas
archivé. 12 tests.

Assisted-by: Claude Opus 5
2026-08-17 01:25:23 -04:00
..
code_generator [FIX] make test with coverage: missing coverage parameter 2023-03-04 23:34:37 -05:00
mail_sandbox.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_analyse_custom_field.py [ADD] analyse: inspect an Odoo database without restoring it 2026-08-10 03:10:50 -04:00
test_analyse_lib.py [ADD] analyse: inspect an Odoo database without restoring it 2026-08-10 03:10:50 -04:00
test_analyse_schema_size.py [ADD] analyse: inspect an Odoo database without restoring it 2026-08-10 03:10:50 -04:00
test_analyse_view_custom.py [ADD] analyse: inspect an Odoo database without restoring it 2026-08-10 03:10:50 -04:00
test_check_addons_exist.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
test_code_generator_tools.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
test_config_file.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_database_tools.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
test_docker_update_version.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
test_execute.py [FIX] todo: test menu, file browser and KeePass refusals 2026-08-16 03:56:34 -04:00
test_format_file_to_commit.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
test_git_tool.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
test_iscompatible.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
test_kdbx_manager.py [FIX] todo: test menu, file browser and KeePass refusals 2026-08-16 03:56:34 -04:00
test_kill_process_by_port.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
test_mail_account_setup.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_accounts.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_charset.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_compose.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_crypto.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_imap_transport.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_live_server.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_menu.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_secrets.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_send.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_store.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_sync.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui_account.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui_help.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui_layout.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui_log.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui_refresh.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui_resize.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui_splitter.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_mail_tui_text.py [ADD] mail: read and send email from the TODO CLI 2026-08-16 03:56:34 -04:00
test_plan.base.md [ADD] test: add bilingual test plan with mmg 2026-03-11 23:07:01 -04:00
test_plan.fr.md [ADD] test: add bilingual test plan with mmg 2026-03-11 23:07:01 -04:00
test_plan.md [ADD] test: add bilingual test plan with mmg 2026-03-11 23:07:01 -04:00
test_todo.py [FIX] todo: test menu, file browser and KeePass refusals 2026-08-16 03:56:34 -04:00
test_todo_file_browser.py [FIX] todo: test menu, file browser and KeePass refusals 2026-08-16 03:56:34 -04:00
test_todo_i18n.py [FIX] todo: test menu, file browser and KeePass refusals 2026-08-16 03:56:34 -04:00
test_todo_menu.py [ADD] analyse: inspect an Odoo database without restoring it 2026-08-10 03:10:50 -04:00
test_todo_upgrade_archive.py [ADD] migration: keep the previous log when a run restarts 2026-08-17 01:25:23 -04:00
test_tooling_requirements.py [ADD] test: what the tooling imports must be declared 2026-08-17 00:40:01 -04:00
test_version.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00