Ejemplo n.º 1
0
 def test_setup_databases(self):
     """
     setup_databases() doesn't fail with dummy database backend.
     """
     tested_connections = db.ConnectionHandler({})
     with mock.patch('django.test.utils.connections', new=tested_connections):
         runner_instance = DiscoverRunner(verbosity=0)
         old_config = runner_instance.setup_databases()
         runner_instance.teardown_databases(old_config)
Ejemplo n.º 2
0
 def test_empty_default_database(self):
     """
     An empty default database in settings does not raise an ImproperlyConfigured
     error when running a unit test that does not use a database.
     """
     testcases.connections = db.ConnectionHandler({'default': {}})
     connection = testcases.connections[db.utils.DEFAULT_DB_ALIAS]
     self.assertEqual(connection.settings_dict['ENGINE'], 'django.db.backends.dummy')
     connections_support_transactions()
Ejemplo n.º 3
0
 def test_empty_default_database(self):
     """
     An empty default database in settings does not raise an ImproperlyConfigured
     error when running a unit test that does not use a database.
     """
     tested_connections = db.ConnectionHandler({"default": {}})
     with mock.patch("django.db.connections", new=tested_connections):
         connection = tested_connections[db.utils.DEFAULT_DB_ALIAS]
         self.assertEqual(connection.settings_dict["ENGINE"],
                          "django.db.backends.dummy")
         connections_support_transactions()
Ejemplo n.º 4
0
 def test_setup_aliased_default_database(self):
     """
     setup_databases() doesn't fail when 'default' is aliased
     """
     tested_connections = db.ConnectionHandler(
         {"default": {"NAME": "dummy"}, "aliased": {"NAME": "dummy"}}
     )
     with mock.patch("django.test.utils.connections", new=tested_connections):
         runner_instance = DiscoverRunner(verbosity=0)
         old_config = runner_instance.setup_databases()
         runner_instance.teardown_databases(old_config)
Ejemplo n.º 5
0
 def test_serialization(self):
     serialize = []
     DatabaseCreation.create_test_db = (
         lambda *args, **kwargs: serialize.append(kwargs.get('serialize')))
     db.connections = db.ConnectionHandler({
         'default': {
             'ENGINE': 'django.db.backends.dummy',
         },
     })
     self.runner_instance.setup_databases()
     self.assertEqual(serialize, [True])
Ejemplo n.º 6
0
 def setUp(self):
     backend.NODE_STATE = backend.NodeState(dict())
     self.connection = db.ConnectionHandler(
         settings={
             db.DEFAULT_DB_ALIAS: {
                 'ENGINE': 'galera.backends.readwritesplit',
                 'NODES': {
                     'db1': {},
                     'db2': {},
                 }
             }
         })[db.DEFAULT_DB_ALIAS]
Ejemplo n.º 7
0
 def test_serialization(self):
     tested_connections = db.ConnectionHandler({
         'default': {
             'ENGINE': 'django.db.backends.dummy',
         },
     })
     with mock.patch('django.db.backends.dummy.base.DatabaseWrapper.creation_class') as mocked_db_creation:
         with mock.patch('django.test.utils.connections', new=tested_connections):
             self.runner_instance.setup_databases()
     mocked_db_creation.return_value.create_test_db.assert_called_once_with(
         verbosity=0, autoclobber=False, serialize=True, keepdb=False
     )
Ejemplo n.º 8
0
 def test_destroy_test_db_restores_db_name(self):
     tested_connections = db.ConnectionHandler({
         'default': {
             'ENGINE': settings.DATABASES[db.DEFAULT_DB_ALIAS]["ENGINE"],
             'NAME': 'xxx_test_database',
         },
     })
     # Using the real current name as old_name to not mess with the test suite.
     old_name = settings.DATABASES[db.DEFAULT_DB_ALIAS]["NAME"]
     with mock.patch('django.db.connections', new=tested_connections):
         tested_connections['default'].creation.destroy_test_db(old_name, verbosity=0, keepdb=True)
         self.assertEqual(tested_connections['default'].settings_dict["NAME"], old_name)
Ejemplo n.º 9
0
 def test_serialized_off(self):
     tested_connections = db.ConnectionHandler({
         'default': {
             'ENGINE': 'django.db.backends.dummy',
             'TEST': {'SERIALIZE': False},
         },
     })
     with mock.patch('django.db.backends.dummy.base.DatabaseCreation') as mocked_db_creation:
         with mock.patch('django.test.runner.connections', new=tested_connections):
             self.runner_instance.setup_databases()
     mocked_db_creation.return_value.create_test_db.assert_called_once_with(
         0, autoclobber=False, serialize=False, keepdb=False
     )
Ejemplo n.º 10
0
 def test_setup_databases(self):
     """
     Test that setup_databases() doesn't fail with dummy database backend.
     """
     tested_connections = db.ConnectionHandler({})
     with mock.patch('django.test.runner.connections', new=tested_connections):
         runner_instance = DiscoverRunner(verbosity=0)
         try:
             old_config = runner_instance.setup_databases()
             runner_instance.teardown_databases(old_config)
         except Exception as e:
             self.fail("setup_databases/teardown_databases unexpectedly raised "
                       "an error: %s" % e)
Ejemplo n.º 11
0
 def test_setup_databases(self):
     """
     Test that setup_databases() doesn't fail with dummy database backend.
     """
     runner_instance = DiscoverRunner(verbosity=0)
     old_db_connections = db.connections
     try:
         db.connections = db.ConnectionHandler({})
         old_config = runner_instance.setup_databases()
         runner_instance.teardown_databases(old_config)
     except Exception as e:
         self.fail("setup_databases/teardown_databases unexpectedly raised "
                   "an error: %s" % e)
     finally:
         db.connections = old_db_connections
Ejemplo n.º 12
0
 def test_setup_aliased_default_database(self):
     """
     setup_databases() doesn't fail when 'default' is aliased
     """
     tested_connections = db.ConnectionHandler({
         'default': {
             'NAME': 'dummy'
         },
         'aliased': {
             'NAME': 'dummy'
         }
     })
     with mock.patch('django.test.utils.connections', new=tested_connections):
         runner_instance = DiscoverRunner(verbosity=0)
         old_config = runner_instance.setup_databases()
         runner_instance.teardown_databases(old_config)
Ejemplo n.º 13
0
    def test_setup_aliased_databases(self):
        tested_connections = db.ConnectionHandler({
            'default': {
                'ENGINE': 'django.db.backends.dummy',
                'NAME': 'dbname',
            },
            'other': {
                'ENGINE': 'django.db.backends.dummy',
                'NAME': 'dbname',
            }
        })

        with mock.patch('django.db.backends.dummy.base.DatabaseWrapper.creation_class') as mocked_db_creation:
            with mock.patch('django.test.utils.connections', new=tested_connections):
                old_config = self.runner_instance.setup_databases()
                self.runner_instance.teardown_databases(old_config)
        mocked_db_creation.return_value.destroy_test_db.assert_called_once_with('dbname', 0, False)
Ejemplo n.º 14
0
 def test_ticket_16885(self):
     """Features are also confirmed on mirrored databases."""
     old_db_connections = db.connections
     try:
         db.connections = db.ConnectionHandler({
             'default': {
                 'ENGINE': 'django.db.backends.sqlite3',
             },
             'slave': {
                 'ENGINE': 'django.db.backends.sqlite3',
                 'TEST_MIRROR': 'default',
             },
         })
         slave = db.connections['slave']
         self.assertEqual(slave.features.supports_transactions, None)
         DjangoTestSuiteRunner(verbosity=0).setup_databases()
         self.assertNotEqual(slave.features.supports_transactions, None)
     finally:
         db.connections = old_db_connections
Ejemplo n.º 15
0
 def test_serialized_off(self):
     tested_connections = db.ConnectionHandler({
         'default': {
             'ENGINE': 'django.db.backends.dummy',
             'TEST': {'SERIALIZE': False},
         },
     })
     msg = (
         'The SERIALIZE test database setting is deprecated as it can be '
         'inferred from the TestCase/TransactionTestCase.databases that '
         'enable the serialized_rollback feature.'
     )
     with mock.patch('django.db.backends.dummy.base.DatabaseWrapper.creation_class') as mocked_db_creation:
         with mock.patch('django.test.utils.connections', new=tested_connections):
             with self.assertWarnsMessage(RemovedInDjango50Warning, msg):
                 self.runner_instance.setup_databases()
     mocked_db_creation.return_value.create_test_db.assert_called_once_with(
         verbosity=0, autoclobber=False, serialize=False, keepdb=False
     )
Ejemplo n.º 16
0
 def test_transaction_support(self):
     # Assert connections mocking is appropriately applied by preventing
     # any attempts at calling create_test_db on the global connection
     # objects.
     for connection in db.connections.all():
         create_test_db = mock.patch.object(
             connection.creation,
             "create_test_db",
             side_effect=AssertionError(
                 "Global connection object shouldn't be manipulated."
             ),
         )
         create_test_db.start()
         self.addCleanup(create_test_db.stop)
     for option_key, option_value in (
         ("NAME", ":memory:"),
         ("TEST", {"NAME": ":memory:"}),
     ):
         tested_connections = db.ConnectionHandler(
             {
                 "default": {
                     "ENGINE": "django.db.backends.sqlite3",
                     option_key: option_value,
                 },
                 "other": {
                     "ENGINE": "django.db.backends.sqlite3",
                     option_key: option_value,
                 },
             }
         )
         with mock.patch("django.test.utils.connections", new=tested_connections):
             other = tested_connections["other"]
             DiscoverRunner(verbosity=0).setup_databases()
             msg = (
                 "DATABASES setting '%s' option set to sqlite3's ':memory:' value "
                 "shouldn't interfere with transaction support detection."
                 % option_key
             )
             # Transaction support is properly initialized for the 'other' DB.
             self.assertTrue(other.features.supports_transactions, msg)
             # And all the DBs report that they support transactions.
             self.assertTrue(connections_support_transactions(), msg)
Ejemplo n.º 17
0
 def test_setup_aliased_default_database(self):
     """
     Test that setup_datebases() doesn't fail when 'default' is aliased
     """
     tested_connections = db.ConnectionHandler({
         'default': {
             'NAME': 'dummy'
         },
         'aliased': {
             'NAME': 'dummy'
         }
     })
     with mock.patch('django.test.runner.connections', new=tested_connections):
         runner_instance = DiscoverRunner(verbosity=0)
         try:
             old_config = runner_instance.setup_databases()
             runner_instance.teardown_databases(old_config)
         except Exception as e:
             self.fail("setup_databases/teardown_databases unexpectedly raised "
                       "an error: %s" % e)
Ejemplo n.º 18
0
    def test_setup_aliased_databases(self):
        tested_connections = db.ConnectionHandler({
            "default": {
                "ENGINE": "django.db.backends.dummy",
                "NAME": "dbname",
            },
            "other": {
                "ENGINE": "django.db.backends.dummy",
                "NAME": "dbname",
            },
        })

        with mock.patch(
                "django.db.backends.dummy.base.DatabaseWrapper.creation_class"
        ) as mocked_db_creation:
            with mock.patch("django.test.utils.connections",
                            new=tested_connections):
                old_config = self.runner_instance.setup_databases()
                self.runner_instance.teardown_databases(old_config)
        mocked_db_creation.return_value.destroy_test_db.assert_called_once_with(
            "dbname", 0, False)
Ejemplo n.º 19
0
 def test_setup_aliased_default_database(self):
     """
     Test that setup_datebases() doesn't fail when 'default' is aliased
     """
     runner_instance = DiscoverRunner(verbosity=0)
     old_db_connections = db.connections
     try:
         db.connections = db.ConnectionHandler({
             'default': {
                 'NAME': 'dummy'
             },
             'aliased': {
                 'NAME': 'dummy'
             }
         })
         old_config = runner_instance.setup_databases()
         runner_instance.teardown_databases(old_config)
     except Exception as e:
         self.fail("setup_databases/teardown_databases unexpectedly raised "
                   "an error: %s" % e)
     finally:
         db.connections = old_db_connections
Ejemplo n.º 20
0
    def test_setup_aliased_databases(self):
        destroyed_names = []
        DatabaseCreation.destroy_test_db = (
            lambda self, old_database_name, verbosity=1, keepdb=False,
            serialize=True: destroyed_names.append(old_database_name))
        DatabaseCreation.create_test_db = (
            lambda self, verbosity=1, autoclobber=False, keepdb=False,
            serialize=True: self._get_test_db_name())

        db.connections = db.ConnectionHandler({
            'default': {
                'ENGINE': 'django.db.backends.dummy',
                'NAME': 'dbname',
            },
            'other': {
                'ENGINE': 'django.db.backends.dummy',
                'NAME': 'dbname',
            }
        })

        old_config = self.runner_instance.setup_databases()
        self.runner_instance.teardown_databases(old_config)

        self.assertEqual(destroyed_names.count('dbname'), 1)
Ejemplo n.º 21
0
 def test_transaction_support(self):
     """Ticket #16329: sqlite3 in-memory test databases"""
     old_db_connections = db.connections
     for option in ('NAME', 'TEST_NAME'):
         try:
             db.connections = db.ConnectionHandler({
                 'default': {
                     'ENGINE': 'django.db.backends.sqlite3',
                     option: ':memory:',
                 },
                 'other': {
                     'ENGINE': 'django.db.backends.sqlite3',
                     option: ':memory:',
                 },
             })
             other = db.connections['other']
             runner.DiscoverRunner(verbosity=0).setup_databases()
             msg = "DATABASES setting '%s' option set to sqlite3's ':memory:' value shouldn't interfere with transaction support detection." % option
             # Transaction support should be properly initialised for the 'other' DB
             self.assertTrue(other.features.supports_transactions, msg)
             # And all the DBs should report that they support transactions
             self.assertTrue(connections_support_transactions(), msg)
         finally:
             db.connections = old_db_connections
Ejemplo n.º 22
0
 def test_transaction_support(self):
     """Ticket #16329: sqlite3 in-memory test databases"""
     for option_key, option_value in (
             ('NAME', ':memory:'), ('TEST', {'NAME': ':memory:'})):
         tested_connections = db.ConnectionHandler({
             'default': {
                 'ENGINE': 'django.db.backends.sqlite3',
                 option_key: option_value,
             },
             'other': {
                 'ENGINE': 'django.db.backends.sqlite3',
                 option_key: option_value,
             },
         })
         with mock.patch('django.db.connections', new=tested_connections):
             with mock.patch('django.test.testcases.connections', new=tested_connections):
                 other = tested_connections['other']
                 DiscoverRunner(verbosity=0).setup_databases()
                 msg = ("DATABASES setting '%s' option set to sqlite3's ':memory:' value "
                        "shouldn't interfere with transaction support detection." % option_key)
                 # Transaction support should be properly initialized for the 'other' DB
                 self.assertTrue(other.features.supports_transactions, msg)
                 # And all the DBs should report that they support transactions
                 self.assertTrue(connections_support_transactions(), msg)