From dd45d5223b3c5640baefcb591782bbcff873b6bf Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Wed, 23 Aug 2023 09:09:23 +0200 Subject: Fixed ResourceWarning from unclosed SQLite connection on Python 3.13+. - backends.sqlite.tests.ThreadSharing.test_database_sharing_in_threads - backends.tests.ThreadTests.test_default_connection_thread_local: on SQLite, close() doesn't explicitly close in-memory connections. - servers.tests.LiveServerInMemoryDatabaseLockTest - test_runner.tests.SQLiteInMemoryTestDbs.test_transaction_support Check out https://github.com/python/cpython/pull/108015. --- tests/backends/sqlite/tests.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'tests/backends/sqlite') diff --git a/tests/backends/sqlite/tests.py b/tests/backends/sqlite/tests.py index 2b728f8409..330ed50488 100644 --- a/tests/backends/sqlite/tests.py +++ b/tests/backends/sqlite/tests.py @@ -6,7 +6,13 @@ import unittest from pathlib import Path from unittest import mock -from django.db import NotSupportedError, connection, transaction +from django.db import ( + DEFAULT_DB_ALIAS, + NotSupportedError, + connection, + connections, + transaction, +) from django.db.models import Aggregate, Avg, StdDev, Sum, Variance from django.db.utils import ConnectionHandler from django.test import TestCase, TransactionTestCase, override_settings @@ -222,11 +228,20 @@ class ThreadSharing(TransactionTestCase): available_apps = ["backends"] def test_database_sharing_in_threads(self): + thread_connections = [] + def create_object(): Object.objects.create() - - create_object() - thread = threading.Thread(target=create_object) - thread.start() - thread.join() - self.assertEqual(Object.objects.count(), 2) + thread_connections.append(connections[DEFAULT_DB_ALIAS].connection) + + main_connection = connections[DEFAULT_DB_ALIAS].connection + try: + create_object() + thread = threading.Thread(target=create_object) + thread.start() + thread.join() + self.assertEqual(Object.objects.count(), 2) + finally: + for conn in thread_connections: + if conn is not main_connection: + conn.close() -- cgit v1.3