@@ -34,7 +34,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
3434 supports_select_for_update_with_limit = False
3535 supports_sequence_reset = False
3636 supports_timezones = False
37- supports_transactions = False
37+ supports_transactions = True
3838 if USE_EMULATOR :
3939 # Emulator does not support json.
4040 supports_json_field = False
@@ -70,8 +70,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
7070 "fixtures_regress.tests.TestFixtures.test_loaddata_raises_error_when_fixture_has_invalid_foreign_key" ,
7171 # Spanner does not support empty list of DML statement.
7272 "backends.tests.BackendTestCase.test_cursor_executemany_with_empty_params_list" ,
73- # No Django transaction management in Spanner.
74- "basic.tests.SelectOnSaveTests.test_select_on_save_lying_update" ,
73+ # "basic.tests.SelectOnSaveTests.test_select_on_save_lying_update",
7574 # django_spanner monkey patches AutoField to have a default value.
7675 "basic.tests.ModelTest.test_hash" ,
7776 "custom_managers.tests.CustomManagerTests.test_slow_removal_through_specified_fk_related_manager" ,
@@ -259,10 +258,8 @@ class DatabaseFeatures(BaseDatabaseFeatures):
259258 "ordering.tests.OrderingTests.test_random_ordering" ,
260259 # casting DateField to DateTimeField adds an unexpected hour:
261260 # https://github.com/googleapis/python-spanner-django/issues/260
262- "db_functions.comparison.test_cast.CastTests.test_cast_from_db_date_to_datetime" ,
263- # Tests that fail during tear down on databases that don't support
264- # transactions: https://github.com/googleapis/python-spanner-django/issues/271
265- "contenttypes_tests.test_models.ContentTypesMultidbTests.test_multidb" ,
261+ "db_functions.comparison.test_cast.CastTests.test_cast_from_db_date_to_datetime" ,``
262+ # "contenttypes_tests.test_models.ContentTypesMultidbTests.test_multidb",
266263 # Tests that by-pass using django_spanner and generate
267264 # invalid DDL: https://github.com/googleapis/python-spanner-django/issues/298
268265 "cache.tests.CreateCacheTableForDBCacheTests" ,
@@ -272,20 +269,19 @@ class DatabaseFeatures(BaseDatabaseFeatures):
272269 "delete.tests.DeletionTests.test_model_delete_returns_num_rows" ,
273270 "delete.tests.DeletionTests.test_deletion_order" ,
274271 "delete.tests.FastDeleteTests.test_fast_delete_empty_no_update_can_self_select" ,
275- # Tests that require transactions.
276- "transaction_hooks.tests.TestConnectionOnCommit.test_does_not_execute_if_transaction_rolled_back" ,
277- "transaction_hooks.tests.TestConnectionOnCommit.test_hooks_cleared_after_rollback" ,
278- "transaction_hooks.tests.TestConnectionOnCommit.test_hooks_cleared_on_reconnect" ,
279- "transaction_hooks.tests.TestConnectionOnCommit.test_no_hooks_run_from_failed_transaction" ,
280- "transaction_hooks.tests.TestConnectionOnCommit.test_no_savepoints_atomic_merged_with_outer" ,
272+ # "transaction_hooks.tests.TestConnectionOnCommit.test_does_not_execute_if_transaction_rolled_back",
273+ # "transaction_hooks.tests.TestConnectionOnCommit.test_hooks_cleared_after_rollback",
274+ # "transaction_hooks.tests.TestConnectionOnCommit.test_hooks_cleared_on_reconnect",
275+ # "transaction_hooks.tests.TestConnectionOnCommit.test_no_hooks_run_from_failed_transaction",
276+ # "transaction_hooks.tests.TestConnectionOnCommit.test_no_savepoints_atomic_merged_with_outer",
281277 # Tests that require savepoints.
282278 "get_or_create.tests.UpdateOrCreateTests.test_integrity" ,
283279 "get_or_create.tests.UpdateOrCreateTests.test_manual_primary_key_test" ,
284280 "get_or_create.tests.UpdateOrCreateTestsWithManualPKs.test_create_with_duplicate_primary_key" ,
285- "test_utils.tests.TestBadSetUpTestData.test_failure_in_setUpTestData_should_rollback_transaction" ,
286- "transaction_hooks.tests.TestConnectionOnCommit.test_discards_hooks_from_rolled_back_savepoint" ,
287- "transaction_hooks.tests.TestConnectionOnCommit.test_inner_savepoint_rolled_back_with_outer" ,
288- "transaction_hooks.tests.TestConnectionOnCommit.test_inner_savepoint_does_not_affect_outer" ,
281+ # "test_utils.tests.TestBadSetUpTestData.test_failure_in_setUpTestData_should_rollback_transaction",
282+ # "transaction_hooks.tests.TestConnectionOnCommit.test_discards_hooks_from_rolled_back_savepoint",
283+ # "transaction_hooks.tests.TestConnectionOnCommit.test_inner_savepoint_rolled_back_with_outer",
284+ # "transaction_hooks.tests.TestConnectionOnCommit.test_inner_savepoint_does_not_affect_outer",
289285 # No sequence for AutoField in Spanner.
290286 "introspection.tests.IntrospectionTests.test_sequence_list" ,
291287 # pyformat parameters not supported on INSERT:
@@ -341,7 +337,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
341337 "schema.tests.SchemaTests.test_alter_int_pk_to_int_unique" ,
342338 # Spanner limitation: migrations aren't atomic since Spanner doesn't
343339 # support transactions.
344- "migrations.test_executor.ExecutorTests.test_atomic_operation_in_non_atomic_migration" ,
340+ # "migrations.test_executor.ExecutorTests.test_atomic_operation_in_non_atomic_migration",
345341 # changing a not null constraint isn't allowed if it affects an index:
346342 # https://github.com/googleapis/python-spanner-django/issues/378
347343 "migrations.test_operations.OperationTests.test_alter_field_with_index" ,
@@ -353,7 +349,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
353349 "multiple_database.tests.AuthTestCase" ,
354350 # This test isn't isolated on databases like Spanner that don't
355351 # support transactions: https://code.djangoproject.com/ticket/31413
356- "migrations.test_loader.LoaderTests.test_loading_squashed" ,
352+ # "migrations.test_loader.LoaderTests.test_loading_squashed",
357353 # Probably due to django-spanner setting a default on AutoField:
358354 # https://github.com/googleapis/python-spanner-django/issues/422
359355 "model_inheritance_regress.tests.ModelInheritanceTest.test_issue_6755" ,
@@ -448,8 +444,8 @@ class DatabaseFeatures(BaseDatabaseFeatures):
448444 # appears in the GROUP BY clause.
449445 "annotations.tests.NonAggregateAnnotationTestCase.test_grouping_by_q_expression_annotation" ,
450446 # No Django transaction management in Spanner.
451- "transactions.tests.DisableDurabiltityCheckTests.test_nested_both_durable" ,
452- "transactions.tests.DisableDurabiltityCheckTests.test_nested_inner_durable" ,
447+ # "transactions.tests.DisableDurabiltityCheckTests.test_nested_both_durable",
448+ # "transactions.tests.DisableDurabiltityCheckTests.test_nested_inner_durable",
453449 # Tests that expect it to be empty untill saved in db.
454450 "test_utils.test_testcase.TestDataTests.test_class_attribute_identity" ,
455451 "model_fields.test_jsonfield.TestSerialization.test_dumping" ,
@@ -469,10 +465,10 @@ class DatabaseFeatures(BaseDatabaseFeatures):
469465 # Spanner doesn't support random ordering.
470466 "aggregation.tests.AggregateTestCase.test_aggregation_random_ordering" ,
471467 # Tests that require transactions.
472- "test_utils.tests.CaptureOnCommitCallbacksTests.test_execute" ,
473- "test_utils.tests.CaptureOnCommitCallbacksTests.test_no_arguments" ,
474- "test_utils.tests.CaptureOnCommitCallbacksTests.test_pre_callback" ,
475- "test_utils.tests.CaptureOnCommitCallbacksTests.test_using" ,
468+ # "test_utils.tests.CaptureOnCommitCallbacksTests.test_execute",
469+ # "test_utils.tests.CaptureOnCommitCallbacksTests.test_no_arguments",
470+ # "test_utils.tests.CaptureOnCommitCallbacksTests.test_pre_callback",
471+ # "test_utils.tests.CaptureOnCommitCallbacksTests.test_using",
476472 # Field: GenericIPAddressField is mapped to String in Spanner
477473 "inspectdb.tests.InspectDBTestCase.test_field_types" ,
478474 # BigIntegerField is mapped to IntegerField in Spanner
@@ -497,7 +493,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
497493 # Some code isn't yet supported by the Spanner emulator.
498494 skip_tests += (
499495 # Emulator doesn't support views.
500- "inspectdb.tests.InspectDBTransactionalTests.test_include_views" ,
496+ # "inspectdb.tests.InspectDBTransactionalTests.test_include_views",
501497 "introspection.tests.IntrospectionTests.test_table_names_with_views" ,
502498 # Check constraints are not supported by Spanner emulator.
503499 "constraints.tests.CheckConstraintTests.test_database_constraint" , # noqa
@@ -1203,7 +1199,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
12031199 "db_functions.text.test_upper.UpperTests.test_basic" , # noqa
12041200 "db_functions.text.test_upper.UpperTests.test_transform" , # noqa
12051201 "defer_regress.tests.DeferAnnotateSelectRelatedTest.test_defer_annotate_select_related" , # noqa
1206- "delete_regress.tests.DeleteCascadeTransactionTests.test_inheritance" , # noqa
1202+ # "delete_regress.tests.DeleteCascadeTransactionTests.test_inheritance", # noqa
12071203 "delete_regress.tests.DeleteLockingTest.test_concurrent_delete" , # noqa
12081204 "expressions.test_queryset_values.ValuesExpressionsTests.test_chained_values_with_expression" , # noqa
12091205 "expressions.test_queryset_values.ValuesExpressionsTests.test_values_expression" , # noqa
@@ -1262,7 +1258,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
12621258 "expressions.tests.ValueTests.test_update_UUIDField_using_Value" , # noqa
12631259 "fixtures.tests.FixtureLoadingTests.test_loaddata_error_message" , # noqa
12641260 "fixtures.tests.FixtureLoadingTests.test_ambiguous_compressed_fixture" , # noqa
1265- "fixtures.tests.FixtureTransactionTests.test_format_discovery" , # noqa
1261+ # "fixtures.tests.FixtureTransactionTests.test_format_discovery", # noqa
12661262 "fixtures.tests.ForwardReferenceTests.test_forward_reference_fk" , # noqa
12671263 "fixtures.tests.ForwardReferenceTests.test_forward_reference_m2m" , # noqa
12681264 "flatpages_tests.test_csrf.FlatpageCSRFTests.test_view_authenticated_flatpage" , # noqa
@@ -1952,7 +1948,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
19521948 "test_client_regress.tests.SessionTests.test_session" , # noqa
19531949 "test_client_regress.tests.SessionTests.test_session_initiated" , # noqa
19541950 "timezones.tests.NewDatabaseTests.test_null_datetime" ,
1955- "transactions.tests.NonAutocommitTests.test_orm_query_after_error_and_rollback" , # noqa
1951+ # "transactions.tests.NonAutocommitTests.test_orm_query_after_error_and_rollback", # noqa
19561952 "update_only_fields.tests.UpdateOnlyFieldsTests.test_empty_update_fields" , # noqa
19571953 "update_only_fields.tests.UpdateOnlyFieldsTests.test_num_queries_inheritance" , # noqa
19581954 "update_only_fields.tests.UpdateOnlyFieldsTests.test_select_related_only_interaction" , # noqa
0 commit comments