Opened 4 years ago
Closed 4 years ago
#33633 closed Cleanup/optimization (fixed)
Some test_utils tests fail on databases that don't support transactions.
| Reported by: | Xiang Zhang | Owned by: | Xiang Zhang |
|---|---|---|---|
| Component: | Core (Other) | Version: | 4.0 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Ready for checkin | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
FAIL: test_reset_sequences (test_utils.test_testcase.TestTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/zhangyangyu/repos/django-tidb/django_tests_dir/django/tests/test_utils/test_testcase.py", line 47, in test_reset_sequences
old_reset_sequences = self.reset_sequences
File "/opt/homebrew/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/contextlib.py", line 126, in __exit__
next(self.gen)
File "/Users/zhangyangyu/repos/django-tidb/django_tests_dir/django/django/test/testcases.py", line 807, in _assert_raises_or_warns_cm
yield cm
AssertionError: TypeError not raised
FAIL: test_execute_tree (test_utils.tests.CaptureOnCommitCallbacksTests)
A visualisation of the callback tree tested. Each node is expected to
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/zhangyangyu/repos/django-tidb/django_tests_dir/django/tests/test_utils/tests.py", line 1657, in test_execute_tree
self.assertEqual(callbacks, [branch_1, branch_2, leaf_3, leaf_1, leaf_2])
AssertionError: Lists differ: [] != [<function CaptureOnCommitCallbacksTests.t[412 chars]ee0>]
Second list contains 5 additional elements.
First extra element 0:
<function CaptureOnCommitCallbacksTests.test_execute_tree.<locals>.branch_1 at 0x107c52430>
- []
+ [<function CaptureOnCommitCallbacksTests.test_execute_tree.<locals>.branch_1 at 0x107c52430>,
+ <function CaptureOnCommitCallbacksTests.test_execute_tree.<locals>.branch_2 at 0x107c52040>,
+ <function CaptureOnCommitCallbacksTests.test_execute_tree.<locals>.leaf_3 at 0x107c52dc0>,
+ <function CaptureOnCommitCallbacksTests.test_execute_tree.<locals>.leaf_1 at 0x107e17310>,
+ <function CaptureOnCommitCallbacksTests.test_execute_tree.<locals>.leaf_2 at 0x107c52ee0>]
FAIL: test_execute_recursive (test_utils.tests.CaptureOnCommitCallbacksTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/zhangyangyu/repos/django-tidb/django_tests_dir/django/tests/test_utils/tests.py", line 1604, in test_execute_recursive
self.assertEqual(len(callbacks), 2)
AssertionError: 0 != 2
test_reset_sequences/test_execute_tree/test_execute_recursive fail with above error if testing against backends not supporting transactions, like MySQL MyIASM engine.
Change History (7)
comment:1 by , 4 years ago
| Description: | modified (diff) |
|---|---|
| Summary: | test_reset_sequences fails for backends not supporting transactions → test_reset_sequences/test_execute_tree/test_execute_recursive fail for backends not supporting transactions |
follow-up: 3 comment:2 by , 4 years ago
| Component: | Testing framework → Core (Other) |
|---|---|
| Summary: | test_reset_sequences/test_execute_tree/test_execute_recursive fail for backends not supporting transactions → Some test_utils tests fail on databases that don't support transactions. |
| Triage Stage: | Unreviewed → Accepted |
| Type: | Uncategorized → Cleanup/optimization |
comment:3 by , 4 years ago
Replying to Mariusz Felisiak:
Thanks for the report. I was able to reproduce even more failures:
ERROR: test_failure_in_setUpTestData_should_rollback_transaction (test_utils.tests.TestBadSetUpTestData) FAIL: test_reset_sequences (test_utils.test_testcase.TestTestCase) FAIL: test_class_attribute_identity (test_utils.test_testcase.TestDataTests) FAIL: test_execute (test_utils.tests.CaptureOnCommitCallbacksTests) FAIL: test_execute_recursive (test_utils.tests.CaptureOnCommitCallbacksTests) FAIL: test_execute_tree (test_utils.tests.CaptureOnCommitCallbacksTests) FAIL: test_no_arguments (test_utils.tests.CaptureOnCommitCallbacksTests) FAIL: test_pre_callback (test_utils.tests.CaptureOnCommitCallbacksTests) FAIL: test_using (test_utils.tests.CaptureOnCommitCallbacksTests)
CaptureOnCommitCallbacksTestsshould be skipped on databases that don't support transactions, i.e. decorated with@skipUnlessDBFeature("supports_transactions"). I didn't check other failures. Would you like to prepare a patch?
Yes. I also find more tests fail but for me the three are most important. Let me submit a fix.
comment:4 by , 4 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
Yes. I also find more tests fail but for me the three are most important. Let me submit a fix.
Great, thanks.
comment:6 by , 4 years ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
Thanks for the report. I was able to reproduce even more failures:
CaptureOnCommitCallbacksTestsshould be skipped on databases that don't support transactions, i.e. decorated with@skipUnlessDBFeature("supports_transactions"). I didn't check other failures. Would you like to prepare a patch?