Commit 0df4593f authored by Anssi Kääriäinen's avatar Anssi Kääriäinen
Browse files

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.
parent 8ee1a664
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -399,6 +399,9 @@ class BaseDatabaseFeatures(object):
    # in the SQL standard.
    supports_tablespaces = False

    # Does the backend reset sequences between tests?
    supports_sequence_reset = True

    # Features that need to be confirmed at runtime
    # Cache whether the confirmation has been performed.
    _confirmed = False
+1 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
    ignores_nulls_in_unique_constraints = False
    has_bulk_insert = True
    supports_tablespaces = True
    supports_sequence_reset = False

class DatabaseOperations(BaseDatabaseOperations):
    compiler_module = "django.db.backends.oracle.compiler"
+3 −8
Original line number Diff line number Diff line
@@ -8,8 +8,7 @@ from optparse import make_option
from django.core.exceptions import ImproperlyConfigured
from django.core.management import call_command
from django import db
from django.db import connection
from django.test import simple, TransactionTestCase
from django.test import simple, TransactionTestCase, skipUnlessDBFeature
from django.test.simple import DjangoTestSuiteRunner, get_tests
from django.test.testcases import connections_support_transactions
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
    that AutoField values start from 1 for each transactional test case.
    """
    @unittest.skipIf(connection.vendor == 'oracle',
                     "Oracle's auto-increment fields are not reset between "
                     "tests")
    @skipUnlessDBFeature('supports_sequence_reset')
    def test_autoincrement_reset1(self):
        p = Person.objects.create(first_name='Jack', last_name='Smith')
        self.assertEqual(p.pk, 1)

    @unittest.skipIf(connection.vendor == 'oracle',
                     "Oracle's auto-increment fields are not reset between "
                     "tests")
    @skipUnlessDBFeature('supports_sequence_reset')
    def test_autoincrement_reset2(self):
        p = Person.objects.create(first_name='Jack', last_name='Smith')
        self.assertEqual(p.pk, 1)