[18.0][FIX] auditlog: move partner/user dependent tests to post_install#3565
Open
[18.0][FIX] auditlog: move partner/user dependent tests to post_install#3565
Conversation
Some auditlog tests create res.partner / res.users records in setUpClass() and setUp(). During module loading, these tests may run before res.partner is fully initialized in the registry. In that phase, the autopost_bills field is not yet available in res.partner._fields, so partner creation can fail with a database-level NotNullViolation. The same scenarios work correctly as post-install tests, once the registry is fully loaded and the field default is available. Mark the affected test classes as post_install to align their execution phase with their actual model dependencies. Task: 5248
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR updates several auditlog test classes to run as post_install tests instead of at_install.
Why this change is needed
A subset of auditlog tests creates
res.partner / res.usersrecords insetUpClass()andsetUp()In our investigation, these tests were executed during the module loading phase, when the res.partner registry was not yet in its final state.
In that phase:
res.partner._fieldsdid not containautopost_billsdefault_get(["autopost_bills"])returned{}As a result, creating a partner failed with:
The same tests executed successfully as post-tests, when the registry was fully loaded and:
res.partner._fieldsdid containautopost_billsdefault_get(["autopost_bills"])returned{"autopost_bills": "ask"}Root cause
The problem was not related to auditlog method patching/reverting logic.
The issue was that these tests were running too early (at_install) while depending on a fully initialized res.partner model.
Fix
The affected test classes are now explicitly marked as:
@tagged("-at_install", "post_install")This makes their execution phase consistent with their actual dependencies.
Why this is correct
These tests are not validating installation-time behavior.
They validate audit logging behavior on regular ORM operations and require the final registry state for
res.partner/res.usersRunning them as
post_installis therefore the correct lifecycle for these scenarios.