details: https://code.tryton.org/tryton/commit/1efc6cabfdf8
branch: default
user: Cédric Krier <[email protected]>
date: Thu Oct 08 23:40:28 2026 +0200
description:
Try to restore database without setup function when testing scenario
Restoring a backup without some setup functions, we can still call the
missing
setup and make a new backup.
diffstat:
trytond/trytond/tests/tools.py | 50 +++++++++++++++++++++++++++--------------
1 files changed, 33 insertions(+), 17 deletions(-)
diffs (65 lines):
diff -r 261e0c174ddf -r 1efc6cabfdf8 trytond/trytond/tests/tools.py
--- a/trytond/trytond/tests/tools.py Wed Sep 23 10:50:27 2026 +0200
+++ b/trytond/trytond/tests/tools.py Thu Oct 08 23:40:28 2026 +0200
@@ -23,28 +23,44 @@
def activate_modules(modules, *setup):
if isinstance(modules, str):
modules = [modules]
- cache_name = '-'.join(sorted(modules))
+ modules = set(modules)
+ setup = list(setup)
+ cache_prefix_name = cache_name = '-'.join(sorted(modules))
if setup_name := '|'.join(_func_name(f) for f in setup):
cache_name += f'--{setup_name}'
- if restore_db_cache(cache_name):
- return _get_config()
- drop_create()
+ setup_to_do = []
+ while True:
+ current_cache_name = cache_prefix_name
+ if setup_name := '|'.join(_func_name(f) for f in setup):
+ current_cache_name += f'--{setup_name}'
+
+ restored = restore_db_cache(current_cache_name)
+ if not restored:
+ if setup:
+ setup_to_do.append(setup.pop())
+ continue
+ drop_create()
+
+ cfg = _get_config()
- cfg = _get_config()
- Module = Model.get('ir.module')
- records = Module.find([
- ('name', 'in', modules),
- ])
- assert len(records) == len(modules), (
- f"Not found: {', '.join(set(modules) - {r.name for r in records})}")
- Module.click(records, 'activate')
- Wizard('ir.module.activate_upgrade').execute('upgrade')
+ Module = Model.get('ir.module')
+ records = Module.find([
+ ('name', 'in', list(modules)),
+ ])
+ assert len(records) == len(modules), (
+ f"Not found: {', '.join(modules - {r.name for r in records})}")
+ Module.click(records, 'activate')
+ Wizard('ir.module.activate_upgrade').execute('upgrade')
+ else:
+ cfg = _get_config()
- for func in setup:
- func(config=cfg)
+ if setup_to_do:
+ for func in reversed(setup_to_do):
+ func(config=cfg)
- backup_db_cache(cache_name)
- return cfg
+ if setup_to_do or not restored:
+ backup_db_cache(cache_name)
+ return cfg
def _get_config():