2009-12-13 18:08:36 +01:00
|
|
|
"""
|
|
|
|
Tests for django test runner
|
|
|
|
"""
|
2013-07-29 19:19:04 +02:00
|
|
|
from __future__ import unicode_literals
|
2011-10-13 23:34:56 +02:00
|
|
|
|
2013-07-01 14:22:27 +02:00
|
|
|
import unittest
|
2010-10-11 14:55:17 +02:00
|
|
|
|
2015-01-28 13:35:27 +01:00
|
|
|
from admin_scripts.tests import AdminScriptTestCase
|
|
|
|
|
2014-09-15 17:17:12 +02:00
|
|
|
from django import db
|
2014-10-24 14:53:58 +02:00
|
|
|
from django.conf import settings
|
2010-12-05 01:44:34 +01:00
|
|
|
from django.core.exceptions import ImproperlyConfigured
|
2011-06-10 10:26:05 +02:00
|
|
|
from django.core.management import call_command
|
2014-09-15 17:17:12 +02:00
|
|
|
from django.db.backends.dummy.base import DatabaseCreation
|
2015-01-28 13:35:27 +01:00
|
|
|
from django.test import (
|
|
|
|
TestCase, TransactionTestCase, mock, skipUnlessDBFeature,
|
|
|
|
)
|
2014-11-15 20:03:31 +01:00
|
|
|
from django.test.runner import DiscoverRunner, dependency_ordered
|
2012-03-13 18:52:48 +01:00
|
|
|
from django.test.testcases import connections_support_transactions
|
2014-03-08 11:13:45 +01:00
|
|
|
from django.utils import six
|
2011-06-12 14:34:10 +02:00
|
|
|
|
2012-04-24 18:47:31 +02:00
|
|
|
from .models import Person
|
2009-12-22 07:00:57 +01:00
|
|
|
|
2011-04-02 15:26:39 +02:00
|
|
|
|
2010-12-05 01:44:34 +01:00
|
|
|
class DependencyOrderingTests(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_simple_dependencies(self):
|
|
|
|
raw = [
|
2011-02-02 15:02:14 +01:00
|
|
|
('s1', ('s1_db', ['alpha'])),
|
|
|
|
('s2', ('s2_db', ['bravo'])),
|
|
|
|
('s3', ('s3_db', ['charlie'])),
|
2010-12-05 01:44:34 +01:00
|
|
|
]
|
|
|
|
dependencies = {
|
|
|
|
'alpha': ['charlie'],
|
|
|
|
'bravo': ['charlie'],
|
|
|
|
}
|
|
|
|
|
2014-11-15 20:03:31 +01:00
|
|
|
ordered = dependency_ordered(raw, dependencies=dependencies)
|
2013-10-26 21:15:03 +02:00
|
|
|
ordered_sigs = [sig for sig, value in ordered]
|
2010-12-05 01:44:34 +01:00
|
|
|
|
|
|
|
self.assertIn('s1', ordered_sigs)
|
|
|
|
self.assertIn('s2', ordered_sigs)
|
|
|
|
self.assertIn('s3', ordered_sigs)
|
|
|
|
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))
|
|
|
|
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))
|
|
|
|
|
|
|
|
def test_chained_dependencies(self):
|
|
|
|
raw = [
|
2011-02-02 15:02:14 +01:00
|
|
|
('s1', ('s1_db', ['alpha'])),
|
|
|
|
('s2', ('s2_db', ['bravo'])),
|
|
|
|
('s3', ('s3_db', ['charlie'])),
|
2010-12-05 01:44:34 +01:00
|
|
|
]
|
|
|
|
dependencies = {
|
|
|
|
'alpha': ['bravo'],
|
|
|
|
'bravo': ['charlie'],
|
|
|
|
}
|
|
|
|
|
2014-11-15 20:03:31 +01:00
|
|
|
ordered = dependency_ordered(raw, dependencies=dependencies)
|
2013-10-26 21:15:03 +02:00
|
|
|
ordered_sigs = [sig for sig, value in ordered]
|
2010-12-05 01:44:34 +01:00
|
|
|
|
|
|
|
self.assertIn('s1', ordered_sigs)
|
|
|
|
self.assertIn('s2', ordered_sigs)
|
|
|
|
self.assertIn('s3', ordered_sigs)
|
|
|
|
|
|
|
|
# Explicit dependencies
|
|
|
|
self.assertLess(ordered_sigs.index('s2'), ordered_sigs.index('s1'))
|
|
|
|
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))
|
|
|
|
|
|
|
|
# Implied dependencies
|
|
|
|
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))
|
|
|
|
|
|
|
|
def test_multiple_dependencies(self):
|
|
|
|
raw = [
|
2011-02-02 15:02:14 +01:00
|
|
|
('s1', ('s1_db', ['alpha'])),
|
|
|
|
('s2', ('s2_db', ['bravo'])),
|
|
|
|
('s3', ('s3_db', ['charlie'])),
|
|
|
|
('s4', ('s4_db', ['delta'])),
|
2010-12-05 01:44:34 +01:00
|
|
|
]
|
|
|
|
dependencies = {
|
2013-10-26 21:15:03 +02:00
|
|
|
'alpha': ['bravo', 'delta'],
|
2010-12-05 01:44:34 +01:00
|
|
|
'bravo': ['charlie'],
|
|
|
|
'delta': ['charlie'],
|
|
|
|
}
|
|
|
|
|
2014-11-15 20:03:31 +01:00
|
|
|
ordered = dependency_ordered(raw, dependencies=dependencies)
|
2013-10-26 21:15:03 +02:00
|
|
|
ordered_sigs = [sig for sig, aliases in ordered]
|
2010-12-05 01:44:34 +01:00
|
|
|
|
|
|
|
self.assertIn('s1', ordered_sigs)
|
|
|
|
self.assertIn('s2', ordered_sigs)
|
|
|
|
self.assertIn('s3', ordered_sigs)
|
|
|
|
self.assertIn('s4', ordered_sigs)
|
|
|
|
|
|
|
|
# Explicit dependencies
|
|
|
|
self.assertLess(ordered_sigs.index('s2'), ordered_sigs.index('s1'))
|
|
|
|
self.assertLess(ordered_sigs.index('s4'), ordered_sigs.index('s1'))
|
|
|
|
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s2'))
|
|
|
|
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s4'))
|
|
|
|
|
|
|
|
# Implicit dependencies
|
|
|
|
self.assertLess(ordered_sigs.index('s3'), ordered_sigs.index('s1'))
|
|
|
|
|
|
|
|
def test_circular_dependencies(self):
|
|
|
|
raw = [
|
2011-02-02 15:02:14 +01:00
|
|
|
('s1', ('s1_db', ['alpha'])),
|
|
|
|
('s2', ('s2_db', ['bravo'])),
|
2010-12-05 01:44:34 +01:00
|
|
|
]
|
|
|
|
dependencies = {
|
|
|
|
'bravo': ['alpha'],
|
|
|
|
'alpha': ['bravo'],
|
|
|
|
}
|
|
|
|
|
2014-11-15 20:03:31 +01:00
|
|
|
self.assertRaises(ImproperlyConfigured, dependency_ordered, raw, dependencies=dependencies)
|
2010-12-05 01:44:34 +01:00
|
|
|
|
2012-04-24 18:05:47 +02:00
|
|
|
def test_own_alias_dependency(self):
|
|
|
|
raw = [
|
|
|
|
('s1', ('s1_db', ['alpha', 'bravo']))
|
|
|
|
]
|
|
|
|
dependencies = {
|
|
|
|
'alpha': ['bravo']
|
|
|
|
}
|
|
|
|
|
|
|
|
with self.assertRaises(ImproperlyConfigured):
|
2014-11-15 20:03:31 +01:00
|
|
|
dependency_ordered(raw, dependencies=dependencies)
|
2012-04-24 18:05:47 +02:00
|
|
|
|
|
|
|
# reordering aliases shouldn't matter
|
|
|
|
raw = [
|
|
|
|
('s1', ('s1_db', ['bravo', 'alpha']))
|
|
|
|
]
|
|
|
|
|
|
|
|
with self.assertRaises(ImproperlyConfigured):
|
2014-11-15 20:03:31 +01:00
|
|
|
dependency_ordered(raw, dependencies=dependencies)
|
2012-04-24 18:05:47 +02:00
|
|
|
|
2011-06-10 10:26:05 +02:00
|
|
|
|
|
|
|
class MockTestRunner(object):
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
pass
|
|
|
|
|
2014-11-29 17:45:06 +01:00
|
|
|
MockTestRunner.run_tests = mock.Mock(return_value=[])
|
2011-06-10 10:26:05 +02:00
|
|
|
|
|
|
|
|
|
|
|
class ManageCommandTests(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_custom_test_runner(self):
|
|
|
|
call_command('test', 'sites',
|
2013-02-26 13:19:18 +01:00
|
|
|
testrunner='test_runner.tests.MockTestRunner')
|
2014-11-29 17:45:06 +01:00
|
|
|
MockTestRunner.run_tests.assert_called_with(('sites',))
|
2011-06-10 10:26:05 +02:00
|
|
|
|
2013-02-16 13:26:36 +01:00
|
|
|
def test_bad_test_runner(self):
|
|
|
|
with self.assertRaises(AttributeError):
|
|
|
|
call_command('test', 'sites',
|
2013-02-26 13:19:18 +01:00
|
|
|
testrunner='test_runner.NonExistentRunner')
|
2013-02-16 13:26:36 +01:00
|
|
|
|
2011-06-10 10:26:05 +02:00
|
|
|
|
2014-11-15 20:03:31 +01:00
|
|
|
class CustomOptionsTestRunner(DiscoverRunner):
|
2011-06-10 10:26:05 +02:00
|
|
|
|
|
|
|
def __init__(self, verbosity=1, interactive=True, failfast=True, option_a=None, option_b=None, option_c=None, **kwargs):
|
|
|
|
super(CustomOptionsTestRunner, self).__init__(verbosity=verbosity, interactive=interactive,
|
|
|
|
failfast=failfast)
|
|
|
|
self.option_a = option_a
|
|
|
|
self.option_b = option_b
|
|
|
|
self.option_c = option_c
|
|
|
|
|
2014-06-06 20:12:23 +02:00
|
|
|
@classmethod
|
|
|
|
def add_arguments(cls, parser):
|
|
|
|
parser.add_argument('--option_a', '-a', action='store', dest='option_a', default='1'),
|
|
|
|
parser.add_argument('--option_b', '-b', action='store', dest='option_b', default='2'),
|
|
|
|
parser.add_argument('--option_c', '-c', action='store', dest='option_c', default='3'),
|
|
|
|
|
2011-06-10 10:26:05 +02:00
|
|
|
def run_tests(self, test_labels, extra_tests=None, **kwargs):
|
2012-04-28 18:02:01 +02:00
|
|
|
print("%s:%s:%s" % (self.option_a, self.option_b, self.option_c))
|
2011-06-10 10:26:05 +02:00
|
|
|
|
|
|
|
|
|
|
|
class CustomTestRunnerOptionsTests(AdminScriptTestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
settings = {
|
2013-02-26 13:19:18 +01:00
|
|
|
'TEST_RUNNER': '\'test_runner.tests.CustomOptionsTestRunner\'',
|
2011-06-10 10:26:05 +02:00
|
|
|
}
|
|
|
|
self.write_settings('settings.py', sdict=settings)
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
self.remove_settings('settings.py')
|
|
|
|
|
|
|
|
def test_default_options(self):
|
2013-02-26 16:02:24 +01:00
|
|
|
args = ['test', '--settings=test_project.settings']
|
2011-06-10 10:26:05 +02:00
|
|
|
out, err = self.run_django_admin(args)
|
|
|
|
self.assertNoOutput(err)
|
|
|
|
self.assertOutput(out, '1:2:3')
|
|
|
|
|
|
|
|
def test_default_and_given_options(self):
|
2013-02-26 16:02:24 +01:00
|
|
|
args = ['test', '--settings=test_project.settings', '--option_b=foo']
|
2011-06-10 10:26:05 +02:00
|
|
|
out, err = self.run_django_admin(args)
|
|
|
|
self.assertNoOutput(err)
|
|
|
|
self.assertOutput(out, '1:foo:3')
|
|
|
|
|
|
|
|
def test_option_name_and_value_separated(self):
|
2013-02-26 16:02:24 +01:00
|
|
|
args = ['test', '--settings=test_project.settings', '--option_b', 'foo']
|
2011-06-10 10:26:05 +02:00
|
|
|
out, err = self.run_django_admin(args)
|
|
|
|
self.assertNoOutput(err)
|
|
|
|
self.assertOutput(out, '1:foo:3')
|
|
|
|
|
|
|
|
def test_all_options_given(self):
|
2013-02-26 16:02:24 +01:00
|
|
|
args = ['test', '--settings=test_project.settings', '--option_a=bar',
|
|
|
|
'--option_b=foo', '--option_c=31337']
|
2011-06-10 10:26:05 +02:00
|
|
|
out, err = self.run_django_admin(args)
|
|
|
|
self.assertNoOutput(err)
|
|
|
|
self.assertOutput(out, 'bar:foo:31337')
|
2011-06-12 14:34:10 +02:00
|
|
|
|
|
|
|
|
2011-12-29 02:18:30 +01:00
|
|
|
class Ticket17477RegressionTests(AdminScriptTestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.write_settings('settings.py')
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
self.remove_settings('settings.py')
|
|
|
|
|
|
|
|
def test_ticket_17477(self):
|
|
|
|
"""'manage.py help test' works after r16352."""
|
|
|
|
args = ['help', 'test']
|
|
|
|
out, err = self.run_manage(args)
|
|
|
|
self.assertNoOutput(err)
|
|
|
|
|
|
|
|
|
2013-06-14 23:11:51 +02:00
|
|
|
class Sqlite3InMemoryTestDbs(TestCase):
|
|
|
|
|
|
|
|
available_apps = []
|
2012-03-14 11:58:23 +01:00
|
|
|
|
|
|
|
@unittest.skipUnless(all(db.connections[conn].vendor == 'sqlite' for conn in db.connections),
|
2013-09-06 00:23:48 +02:00
|
|
|
"This is an sqlite-specific issue")
|
2012-03-13 18:52:48 +01:00
|
|
|
def test_transaction_support(self):
|
|
|
|
"""Ticket #16329: sqlite3 in-memory test databases"""
|
|
|
|
old_db_connections = db.connections
|
2014-03-09 21:37:05 +01:00
|
|
|
for option_key, option_value in (
|
|
|
|
('NAME', ':memory:'), ('TEST', {'NAME': ':memory:'})):
|
2012-03-13 18:52:48 +01:00
|
|
|
try:
|
|
|
|
db.connections = db.ConnectionHandler({
|
|
|
|
'default': {
|
|
|
|
'ENGINE': 'django.db.backends.sqlite3',
|
2014-03-09 21:37:05 +01:00
|
|
|
option_key: option_value,
|
2012-03-13 18:52:48 +01:00
|
|
|
},
|
|
|
|
'other': {
|
|
|
|
'ENGINE': 'django.db.backends.sqlite3',
|
2014-03-09 21:37:05 +01:00
|
|
|
option_key: option_value,
|
2012-03-13 18:52:48 +01:00
|
|
|
},
|
|
|
|
})
|
|
|
|
other = db.connections['other']
|
2014-11-15 20:03:31 +01:00
|
|
|
DiscoverRunner(verbosity=0).setup_databases()
|
2014-03-09 21:37:05 +01:00
|
|
|
msg = "DATABASES setting '%s' option set to sqlite3's ':memory:' value shouldn't interfere with transaction support detection." % option_key
|
2014-03-02 15:25:53 +01:00
|
|
|
# Transaction support should be properly initialized for the 'other' DB
|
2012-06-09 17:22:24 +02:00
|
|
|
self.assertTrue(other.features.supports_transactions, msg)
|
2012-03-13 18:52:48 +01:00
|
|
|
# And all the DBs should report that they support transactions
|
2012-03-14 11:58:23 +01:00
|
|
|
self.assertTrue(connections_support_transactions(), msg)
|
2012-03-13 18:52:48 +01:00
|
|
|
finally:
|
|
|
|
db.connections = old_db_connections
|
2012-04-24 18:47:31 +02:00
|
|
|
|
|
|
|
|
2013-01-04 13:55:20 +01:00
|
|
|
class DummyBackendTest(unittest.TestCase):
|
|
|
|
def test_setup_databases(self):
|
|
|
|
"""
|
|
|
|
Test that setup_databases() doesn't fail with dummy database backend.
|
|
|
|
"""
|
2014-11-15 20:03:31 +01:00
|
|
|
runner_instance = DiscoverRunner(verbosity=0)
|
2013-01-04 13:55:20 +01:00
|
|
|
old_db_connections = db.connections
|
|
|
|
try:
|
|
|
|
db.connections = db.ConnectionHandler({})
|
2013-06-14 16:02:30 +02:00
|
|
|
old_config = runner_instance.setup_databases()
|
|
|
|
runner_instance.teardown_databases(old_config)
|
2013-01-04 13:55:20 +01:00
|
|
|
except Exception as e:
|
2013-07-05 01:58:58 +02:00
|
|
|
self.fail("setup_databases/teardown_databases unexpectedly raised "
|
|
|
|
"an error: %s" % e)
|
|
|
|
finally:
|
|
|
|
db.connections = old_db_connections
|
|
|
|
|
|
|
|
|
|
|
|
class AliasedDefaultTestSetupTest(unittest.TestCase):
|
|
|
|
def test_setup_aliased_default_database(self):
|
|
|
|
"""
|
|
|
|
Test that setup_datebases() doesn't fail when 'default' is aliased
|
|
|
|
"""
|
2014-11-15 20:03:31 +01:00
|
|
|
runner_instance = DiscoverRunner(verbosity=0)
|
2013-07-05 01:58:58 +02:00
|
|
|
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:
|
2013-01-04 13:55:20 +01:00
|
|
|
self.fail("setup_databases/teardown_databases unexpectedly raised "
|
|
|
|
"an error: %s" % e)
|
|
|
|
finally:
|
|
|
|
db.connections = old_db_connections
|
|
|
|
|
|
|
|
|
2014-09-15 17:17:12 +02:00
|
|
|
class SetupDatabasesTests(unittest.TestCase):
|
2013-07-13 23:46:05 +02:00
|
|
|
|
2014-09-15 17:17:12 +02:00
|
|
|
def setUp(self):
|
|
|
|
self._old_db_connections = db.connections
|
|
|
|
self._old_destroy_test_db = DatabaseCreation.destroy_test_db
|
|
|
|
self._old_create_test_db = DatabaseCreation.create_test_db
|
2014-11-15 20:03:31 +01:00
|
|
|
self.runner_instance = DiscoverRunner(verbosity=0)
|
2013-07-13 23:46:05 +02:00
|
|
|
|
2014-09-15 17:17:12 +02:00
|
|
|
def tearDown(self):
|
|
|
|
DatabaseCreation.create_test_db = self._old_create_test_db
|
|
|
|
DatabaseCreation.destroy_test_db = self._old_destroy_test_db
|
|
|
|
db.connections = self._old_db_connections
|
2013-07-13 23:46:05 +02:00
|
|
|
|
2014-09-15 17:17:12 +02:00
|
|
|
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)
|
|
|
|
|
2014-10-24 14:53:58 +02:00
|
|
|
def test_destroy_test_db_restores_db_name(self):
|
|
|
|
db.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"]
|
|
|
|
db.connections['default'].creation.destroy_test_db(old_name, verbosity=0, keepdb=True)
|
|
|
|
self.assertEqual(db.connections['default'].settings_dict["NAME"], old_name)
|
|
|
|
|
2014-09-15 17:17:12 +02:00
|
|
|
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])
|
|
|
|
|
|
|
|
def test_serialized_off(self):
|
|
|
|
serialize = []
|
|
|
|
DatabaseCreation.create_test_db = (
|
|
|
|
lambda *args, **kwargs: serialize.append(kwargs.get('serialize'))
|
|
|
|
)
|
|
|
|
db.connections = db.ConnectionHandler({
|
|
|
|
'default': {
|
|
|
|
'ENGINE': 'django.db.backends.dummy',
|
|
|
|
'TEST': {'SERIALIZE': False},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
self.runner_instance.setup_databases()
|
|
|
|
self.assertEqual(serialize, [False])
|
2013-07-13 23:46:05 +02:00
|
|
|
|
|
|
|
|
2013-01-03 01:00:39 +01:00
|
|
|
class DeprecationDisplayTest(AdminScriptTestCase):
|
|
|
|
# tests for 19546
|
|
|
|
def setUp(self):
|
2013-05-11 05:08:45 +02:00
|
|
|
settings = {
|
|
|
|
'DATABASES': '{"default": {"ENGINE":"django.db.backends.sqlite3", "NAME":":memory:"}}'
|
2013-10-18 11:02:43 +02:00
|
|
|
}
|
2013-01-03 01:00:39 +01:00
|
|
|
self.write_settings('settings.py', sdict=settings)
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
self.remove_settings('settings.py')
|
|
|
|
|
|
|
|
def test_runner_deprecation_verbosity_default(self):
|
2013-05-11 05:08:45 +02:00
|
|
|
args = ['test', '--settings=test_project.settings', 'test_runner_deprecation_app']
|
2013-01-03 01:00:39 +01:00
|
|
|
out, err = self.run_django_admin(args)
|
2013-12-31 13:12:30 +01:00
|
|
|
self.assertIn("Ran 1 test", err)
|
2014-03-08 11:13:45 +01:00
|
|
|
six.assertRegex(self, err, r"RemovedInDjango\d\dWarning: warning from test")
|
|
|
|
six.assertRegex(self, err, r"RemovedInDjango\d\dWarning: module-level warning from deprecation_app")
|
2013-01-03 01:00:39 +01:00
|
|
|
|
|
|
|
def test_runner_deprecation_verbosity_zero(self):
|
2013-12-31 13:12:30 +01:00
|
|
|
args = ['test', '--settings=test_project.settings', '--verbosity=0', 'test_runner_deprecation_app']
|
2013-01-03 01:00:39 +01:00
|
|
|
out, err = self.run_django_admin(args)
|
2013-12-31 13:12:30 +01:00
|
|
|
self.assertIn("Ran 1 test", err)
|
2014-10-28 11:02:56 +01:00
|
|
|
self.assertNotIn("warning from test", err)
|
2013-01-03 01:00:39 +01:00
|
|
|
|
2013-01-09 19:59:24 +01:00
|
|
|
|
2012-04-24 18:47:31 +02:00
|
|
|
class AutoIncrementResetTest(TransactionTestCase):
|
|
|
|
"""
|
|
|
|
Here we test creating the same model two times in different test methods,
|
|
|
|
and check that both times they get "1" as their PK value. That is, we test
|
|
|
|
that AutoField values start from 1 for each transactional test case.
|
|
|
|
"""
|
2012-07-24 22:24:16 +02:00
|
|
|
|
2013-06-04 08:09:29 +02:00
|
|
|
available_apps = ['test_runner']
|
|
|
|
|
2012-07-24 22:24:16 +02:00
|
|
|
reset_sequences = True
|
|
|
|
|
2012-05-22 22:46:27 +02:00
|
|
|
@skipUnlessDBFeature('supports_sequence_reset')
|
2012-04-24 18:47:31 +02:00
|
|
|
def test_autoincrement_reset1(self):
|
|
|
|
p = Person.objects.create(first_name='Jack', last_name='Smith')
|
2012-05-03 16:39:16 +02:00
|
|
|
self.assertEqual(p.pk, 1)
|
2012-04-24 18:47:31 +02:00
|
|
|
|
2012-05-22 22:46:27 +02:00
|
|
|
@skipUnlessDBFeature('supports_sequence_reset')
|
2012-04-24 18:47:31 +02:00
|
|
|
def test_autoincrement_reset2(self):
|
|
|
|
p = Person.objects.create(first_name='Jack', last_name='Smith')
|
2012-05-03 16:39:16 +02:00
|
|
|
self.assertEqual(p.pk, 1)
|