Fixed #18319 -- Added 'supports_sequence_reset' DB feature
Added a new feature to allow 3rd party backends to skip tests which test sequence resetting. Thanks to manfre for report and patch.
This commit is contained in:
parent
8ee1a664f9
commit
0df4593f0e
|
@ -399,6 +399,9 @@ class BaseDatabaseFeatures(object):
|
||||||
# in the SQL standard.
|
# in the SQL standard.
|
||||||
supports_tablespaces = False
|
supports_tablespaces = False
|
||||||
|
|
||||||
|
# Does the backend reset sequences between tests?
|
||||||
|
supports_sequence_reset = True
|
||||||
|
|
||||||
# Features that need to be confirmed at runtime
|
# Features that need to be confirmed at runtime
|
||||||
# Cache whether the confirmation has been performed.
|
# Cache whether the confirmation has been performed.
|
||||||
_confirmed = False
|
_confirmed = False
|
||||||
|
|
|
@ -83,6 +83,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
|
||||||
ignores_nulls_in_unique_constraints = False
|
ignores_nulls_in_unique_constraints = False
|
||||||
has_bulk_insert = True
|
has_bulk_insert = True
|
||||||
supports_tablespaces = True
|
supports_tablespaces = True
|
||||||
|
supports_sequence_reset = False
|
||||||
|
|
||||||
class DatabaseOperations(BaseDatabaseOperations):
|
class DatabaseOperations(BaseDatabaseOperations):
|
||||||
compiler_module = "django.db.backends.oracle.compiler"
|
compiler_module = "django.db.backends.oracle.compiler"
|
||||||
|
|
|
@ -8,8 +8,7 @@ from optparse import make_option
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.core.management import call_command
|
from django.core.management import call_command
|
||||||
from django import db
|
from django import db
|
||||||
from django.db import connection
|
from django.test import simple, TransactionTestCase, skipUnlessDBFeature
|
||||||
from django.test import simple, TransactionTestCase
|
|
||||||
from django.test.simple import DjangoTestSuiteRunner, get_tests
|
from django.test.simple import DjangoTestSuiteRunner, get_tests
|
||||||
from django.test.testcases import connections_support_transactions
|
from django.test.testcases import connections_support_transactions
|
||||||
from django.utils import unittest
|
from django.utils import unittest
|
||||||
|
@ -291,16 +290,12 @@ class AutoIncrementResetTest(TransactionTestCase):
|
||||||
and check that both times they get "1" as their PK value. That is, we test
|
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.
|
that AutoField values start from 1 for each transactional test case.
|
||||||
"""
|
"""
|
||||||
@unittest.skipIf(connection.vendor == 'oracle',
|
@skipUnlessDBFeature('supports_sequence_reset')
|
||||||
"Oracle's auto-increment fields are not reset between "
|
|
||||||
"tests")
|
|
||||||
def test_autoincrement_reset1(self):
|
def test_autoincrement_reset1(self):
|
||||||
p = Person.objects.create(first_name='Jack', last_name='Smith')
|
p = Person.objects.create(first_name='Jack', last_name='Smith')
|
||||||
self.assertEqual(p.pk, 1)
|
self.assertEqual(p.pk, 1)
|
||||||
|
|
||||||
@unittest.skipIf(connection.vendor == 'oracle',
|
@skipUnlessDBFeature('supports_sequence_reset')
|
||||||
"Oracle's auto-increment fields are not reset between "
|
|
||||||
"tests")
|
|
||||||
def test_autoincrement_reset2(self):
|
def test_autoincrement_reset2(self):
|
||||||
p = Person.objects.create(first_name='Jack', last_name='Smith')
|
p = Person.objects.create(first_name='Jack', last_name='Smith')
|
||||||
self.assertEqual(p.pk, 1)
|
self.assertEqual(p.pk, 1)
|
||||||
|
|
Loading…
Reference in New Issue