diff options
| author | Simon Charette <charette.s@gmail.com> | 2018-07-12 00:14:24 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2019-01-10 19:11:21 -0500 |
| commit | 41e73de39df31c4b13d65462bfeedde6924226d8 (patch) | |
| tree | a5842ddf1de35a51e54ffb3c5515bd89310c988f /tests/test_runner | |
| parent | 8c775391b78b2a4a2b57c5e89ed4888f36aada4b (diff) | |
Fixed #28478 -- Make DiscoverRunner skip creating unused test databases.
SimpleTestCase.databases makes it possible to determine the set of
databases required to run the discovered tests.
Diffstat (limited to 'tests/test_runner')
| -rw-r--r-- | tests/test_runner/test_discover_runner.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py index d7569fc111..caa48a852d 100644 --- a/tests/test_runner/test_discover_runner.py +++ b/tests/test_runner/test_discover_runner.py @@ -3,6 +3,7 @@ from argparse import ArgumentParser from contextlib import contextmanager from unittest import TestSuite, TextTestRunner, defaultTestLoader +from django.db import connections from django.test import SimpleTestCase from django.test.runner import DiscoverRunner from django.test.utils import captured_stdout @@ -223,3 +224,47 @@ class DiscoverRunnerTests(SimpleTestCase): with captured_stdout() as stdout: runner.build_suite(['test_runner_apps.tagged.tests']) self.assertIn('Excluding test tag(s): bar, foo.\n', stdout.getvalue()) + + +class DiscoverRunnerGetDatabasesTests(SimpleTestCase): + runner = DiscoverRunner(verbosity=2) + skip_msg = 'Skipping setup of unused database(s): ' + + def get_databases(self, test_labels): + suite = self.runner.build_suite(test_labels) + with captured_stdout() as stdout: + databases = self.runner.get_databases(suite) + return databases, stdout.getvalue() + + def test_mixed(self): + databases, output = self.get_databases(['test_runner_apps.databases.tests']) + self.assertEqual(databases, set(connections)) + self.assertNotIn(self.skip_msg, output) + + def test_all(self): + databases, output = self.get_databases(['test_runner_apps.databases.tests.AllDatabasesTests']) + self.assertEqual(databases, set(connections)) + self.assertNotIn(self.skip_msg, output) + + def test_default_and_other(self): + databases, output = self.get_databases([ + 'test_runner_apps.databases.tests.DefaultDatabaseTests', + 'test_runner_apps.databases.tests.OtherDatabaseTests', + ]) + self.assertEqual(databases, set(connections)) + self.assertNotIn(self.skip_msg, output) + + def test_default_only(self): + databases, output = self.get_databases(['test_runner_apps.databases.tests.DefaultDatabaseTests']) + self.assertEqual(databases, {'default'}) + self.assertIn(self.skip_msg + 'other', output) + + def test_other_only(self): + databases, output = self.get_databases(['test_runner_apps.databases.tests.OtherDatabaseTests']) + self.assertEqual(databases, {'other'}) + self.assertIn(self.skip_msg + 'default', output) + + def test_no_databases_required(self): + databases, output = self.get_databases(['test_runner_apps.databases.tests.NoDatabaseTests']) + self.assertEqual(databases, set()) + self.assertIn(self.skip_msg + 'default, other', output) |
