Skip to content

Commit

Permalink
Added a skip for a test that fails in Oracle. Unlike other backends, …
Browse files Browse the repository at this point in the history
…Oracle does not allow duplicate rows where there is a unique_together constraint for which some but not all of the columns are NULL.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@15777 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
nightflyerkilo committed Mar 8, 2011
1 parent 4094354 commit d9e61a4
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 1 deletion.
4 changes: 4 additions & 0 deletions django/db/backends/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,10 @@ class BaseDatabaseFeatures(object):
# Does the backend distinguish between '' and None?
interprets_empty_strings_as_nulls = False

# Does the backend allow inserting duplicate rows when a unique_together
# constraint exists, but one of the unique_together columns is NULL?
ignores_nulls_in_unique_constraints = True

can_use_chunked_reads = True
can_return_id_from_insert = False
uses_autocommit = False
Expand Down
1 change: 1 addition & 0 deletions django/db/backends/oracle/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
supports_timezones = False
supports_bitwise_or = False
can_defer_constraint_checks = True
ignores_nulls_in_unique_constraints = False

class DatabaseOperations(BaseDatabaseOperations):
compiler_module = "django.db.backends.oracle.compiler"
Expand Down
5 changes: 4 additions & 1 deletion tests/modeltests/model_formsets/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from django.db import models
from django.forms.models import (_get_foreign_key, inlineformset_factory,
modelformset_factory, modelformset_factory)
from django.test import TestCase
from django.test import TestCase, skipUnlessDBFeature

from modeltests.model_formsets.models import (
Author, BetterAuthor, Book, BookWithCustomPK, Editor,
Expand Down Expand Up @@ -577,10 +577,13 @@ def test_inline_formsets_with_multi_table_inheritance(self):
self.assertEqual(book1.title, 'Flowers of Evil')
self.assertEqual(book1.notes, 'English translation of Les Fleurs du Mal')

@skipUnlessDBFeature('ignores_nulls_in_unique_constraints')
def test_inline_formsets_with_nullable_unique_together(self):
# Test inline formsets where the inline-edited object has a
# unique_together constraint with a nullable member

AuthorBooksFormSet4 = inlineformset_factory(Author, BookWithOptionalAltEditor, can_delete=False, extra=2)
author = Author.objects.create(pk=1, name='Charles Baudelaire')

data = {
'bookwithoptionalalteditor_set-TOTAL_FORMS': '2', # the number of forms rendered
Expand Down

0 comments on commit d9e61a4

Please sign in to comment.