Fixed #30413 -- Fixed test database signature on SQLite when test database name is provided.

Previously, the same signature was created for multiple in-memory
databases on SQLite when they had tests databases names
DATABASES['TEST']['NAME'].
This commit is contained in:
Farhaan Bukhsh 2019-11-20 23:07:10 +05:30 committed by Mariusz Felisiak
parent 62254c5202
commit 664c98f1f8
2 changed files with 20 additions and 0 deletions

View File

@ -98,4 +98,6 @@ class DatabaseCreation(BaseDatabaseCreation):
sig = [self.connection.settings_dict['NAME']]
if self.is_in_memory_db(test_database_name):
sig.append(self.connection.alias)
else:
sig.append(test_database_name)
return tuple(sig)

View File

@ -0,0 +1,18 @@
import copy
import unittest
from django.db import connection
from django.test import SimpleTestCase
@unittest.skipUnless(connection.vendor == 'sqlite', 'SQLite tests')
class TestDbSignatureTests(SimpleTestCase):
def test_custom_test_name(self):
saved_settings = copy.deepcopy(connection.settings_dict)
try:
connection.settings_dict['NAME'] = None
connection.settings_dict['TEST']['NAME'] = 'custom.sqlite.db'
signature = connection.creation.test_db_signature()
self.assertEqual(signature, (None, 'custom.sqlite.db'))
finally:
connection.settings_dict = saved_settings