Opened 14 years ago
Closed 5 years ago
#15063 closed Bug (duplicate)
multi_db flag on TestCase causes invalid error reporting when loading fixtures.
Reported by: | David Cramer | Owned by: | nobody |
---|---|---|---|
Component: | Testing framework | Version: | 1.2 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
When setting multi_db = True on a test case you may encounter aliases which do not allow synchronization with specific tables. Due to the behavior of the fixture loader, it sees that no objects were loaded for these specific aliases and prints an exception to stderr and runs a rollback command.
The chunk of code in reference is here http://code.djangoproject.com/browser/django/trunk/django/core/management/commands/loaddata.py#L196
(For posterity, the 'if objects_in_fixture == 0:' error assumption is what causes this behavior)
Change History (6)
comment:1 by , 14 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
comment:2 by , 14 years ago
Component: | Uncategorized → Testing framework |
---|---|
Resolution: | invalid |
Status: | closed → reopened |
Triage Stage: | Unreviewed → Accepted |
Following discussion with David on IRC:
The actual problem here is a fixture that contains many valid objects, being synchronized onto a database where none of the models for those objects exist. E.g., I have a fixture with 10 Author objects; the Author table isn't synchronized onto 'other', but I'm loading Author onto 'other'. There are 10 valid objects, but 0 "loaded" objects, which raises an error during test case fixture loading.
comment:3 by , 14 years ago
Severity: | → Normal |
---|---|
Type: | → Bug |
comment:4 by , 13 years ago
Easy pickings: | unset |
---|---|
Summary: | multi_db flag on TestCase causes invalid error reporting → multi_db flag on TestCase causes invalid error reporting when loading fixtures |
UI/UX: | unset |
comment:5 by , 12 years ago
Status: | reopened → new |
---|
comment:6 by , 5 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
Summary: | multi_db flag on TestCase causes invalid error reporting when loading fixtures → multi_db flag on TestCase causes invalid error reporting when loading fixtures. |
As far as I'm concerned this is a duplicate of #16713.
You appear to be describing a situation where a test database can't synchronize all the tables it should have, and as a result, fixture loading fails.
For my money, that situation *should* raise errors.
I'm not sure I see how this is related to multi-db. Setting multi-db=True increases the number of databases that will be synchronized, but it doesn't change the way individual databases are synchronized. If you get this problem with multi-db, you should be able to reproduce it with a single database under the right conditions.
Closing invalid; if I've missed the point, feel free to reopen and provide more detail. For the record, you should also feel free to provide sufficient detail when you open a ticket in the first place :-)