Loading django/db/backends/sqlite3/creation.py +5 −3 Original line number Diff line number Diff line Loading @@ -11,14 +11,16 @@ class DatabaseCreation(BaseDatabaseCreation): def _get_test_db_name(self): test_database_name = self.connection.settings_dict['TEST']['NAME'] can_share_in_memory_db = self.connection.features.can_share_in_memory_db if test_database_name and test_database_name != ':memory:': if 'mode=memory' in test_database_name: if 'mode=memory' in test_database_name and not can_share_in_memory_db: raise ImproperlyConfigured( "Using `mode=memory` parameter in the database name is not allowed, " "Using a shared memory database with `mode=memory` in the " "database name is not supported in your environment, " "use `:memory:` instead." ) return test_database_name if self.connection.features.can_share_in_memory_db: if can_share_in_memory_db: return 'file:memorydb_%s?mode=memory&cache=shared' % self.connection.alias return ':memory:' Loading docs/releases/1.8.6.txt +3 −0 Original line number Diff line number Diff line Loading @@ -11,3 +11,6 @@ Bugfixes * Fixed a regression causing ``ModelChoiceField`` to ignore ``prefetch_related()`` on its queryset (:ticket:`25496`). * Allowed "mode=memory" in SQLite test database name if supported (:ticket:`12118`). tests/backends/tests.py +24 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,30 @@ class SQLiteTests(TestCase): models.Item.objects.all().aggregate, **{'complex': aggregate('last_modified') + aggregate('last_modified')}) def test_memory_db_test_name(self): """ A named in-memory db should be allowed where supported. """ from django.db.backends.sqlite3.base import DatabaseWrapper settings_dict = { 'TEST': { 'NAME': 'file:memorydb_test?mode=memory&cache=shared', } } wrapper = DatabaseWrapper(settings_dict) creation = wrapper.creation if creation.connection.features.can_share_in_memory_db: expected = creation.connection.settings_dict['TEST']['NAME'] self.assertEqual(creation._get_test_db_name(), expected) else: msg = ( "Using a shared memory database with `mode=memory` in the " "database name is not supported in your environment, " "use `:memory:` instead." ) with self.assertRaisesMessage(ImproperlyConfigured, msg): creation._get_test_db_name() @unittest.skipUnless(connection.vendor == 'postgresql', "Test only for PostgreSQL") class PostgreSQLTests(TestCase): Loading Loading
django/db/backends/sqlite3/creation.py +5 −3 Original line number Diff line number Diff line Loading @@ -11,14 +11,16 @@ class DatabaseCreation(BaseDatabaseCreation): def _get_test_db_name(self): test_database_name = self.connection.settings_dict['TEST']['NAME'] can_share_in_memory_db = self.connection.features.can_share_in_memory_db if test_database_name and test_database_name != ':memory:': if 'mode=memory' in test_database_name: if 'mode=memory' in test_database_name and not can_share_in_memory_db: raise ImproperlyConfigured( "Using `mode=memory` parameter in the database name is not allowed, " "Using a shared memory database with `mode=memory` in the " "database name is not supported in your environment, " "use `:memory:` instead." ) return test_database_name if self.connection.features.can_share_in_memory_db: if can_share_in_memory_db: return 'file:memorydb_%s?mode=memory&cache=shared' % self.connection.alias return ':memory:' Loading
docs/releases/1.8.6.txt +3 −0 Original line number Diff line number Diff line Loading @@ -11,3 +11,6 @@ Bugfixes * Fixed a regression causing ``ModelChoiceField`` to ignore ``prefetch_related()`` on its queryset (:ticket:`25496`). * Allowed "mode=memory" in SQLite test database name if supported (:ticket:`12118`).
tests/backends/tests.py +24 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,30 @@ class SQLiteTests(TestCase): models.Item.objects.all().aggregate, **{'complex': aggregate('last_modified') + aggregate('last_modified')}) def test_memory_db_test_name(self): """ A named in-memory db should be allowed where supported. """ from django.db.backends.sqlite3.base import DatabaseWrapper settings_dict = { 'TEST': { 'NAME': 'file:memorydb_test?mode=memory&cache=shared', } } wrapper = DatabaseWrapper(settings_dict) creation = wrapper.creation if creation.connection.features.can_share_in_memory_db: expected = creation.connection.settings_dict['TEST']['NAME'] self.assertEqual(creation._get_test_db_name(), expected) else: msg = ( "Using a shared memory database with `mode=memory` in the " "database name is not supported in your environment, " "use `:memory:` instead." ) with self.assertRaisesMessage(ImproperlyConfigured, msg): creation._get_test_db_name() @unittest.skipUnless(connection.vendor == 'postgresql', "Test only for PostgreSQL") class PostgreSQLTests(TestCase): Loading