Fixed a test case that was failing in Oracle due to conflation of null and empty strings.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14547 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Ian Kelly 2010-11-12 19:26:57 +00:00
parent 9892f4c5d5
commit 8a7a44ffa2
2 changed files with 20 additions and 8 deletions

View File

@ -28,13 +28,7 @@ class Stuff(models.Model):
owner = models.ForeignKey(User, null=True) owner = models.ForeignKey(User, null=True)
def __unicode__(self): def __unicode__(self):
# Oracle doesn't distinguish between None and the empty string. return unicode(self.name) + u' is owned by ' + unicode(self.owner)
# This hack makes the test case pass using Oracle.
name = self.name
if (connection.features.interprets_empty_strings_as_nulls
and name == u''):
name = None
return unicode(name) + u' is owned by ' + unicode(self.owner)
class Absolute(models.Model): class Absolute(models.Model):

View File

@ -13,7 +13,8 @@ from django.core.management.commands.dumpdata import sort_dependencies
from django.core.management.base import CommandError from django.core.management.base import CommandError
from django.db.models import signals from django.db.models import signals
from django.db import transaction from django.db import transaction
from django.test import TestCase, TransactionTestCase from django.test import TestCase, TransactionTestCase, skipIfDBFeature, \
skipUnlessDBFeature
from models import Animal, Stuff from models import Animal, Stuff
from models import Absolute, Parent, Child from models import Absolute, Parent, Child
@ -61,6 +62,7 @@ class TestFixtures(TestCase):
animal.save() animal.save()
self.assertGreater(animal.id, 1) self.assertGreater(animal.id, 1)
@skipIfDBFeature('interprets_empty_strings_as_nulls')
def test_pretty_print_xml(self): def test_pretty_print_xml(self):
""" """
Regression test for ticket #4558 -- pretty printing of XML fixtures Regression test for ticket #4558 -- pretty printing of XML fixtures
@ -76,6 +78,22 @@ class TestFixtures(TestCase):
self.assertEqual(Stuff.objects.all()[0].name, None) self.assertEqual(Stuff.objects.all()[0].name, None)
self.assertEqual(Stuff.objects.all()[0].owner, None) self.assertEqual(Stuff.objects.all()[0].owner, None)
@skipUnlessDBFeature('interprets_empty_strings_as_nulls')
def test_pretty_print_xml_empty_strings(self):
"""
Regression test for ticket #4558 -- pretty printing of XML fixtures
doesn't affect parsing of None values.
"""
# Load a pretty-printed XML fixture with Nulls.
management.call_command(
'loaddata',
'pretty.xml',
verbosity=0,
commit=False
)
self.assertEqual(Stuff.objects.all()[0].name, u'')
self.assertEqual(Stuff.objects.all()[0].owner, None)
def test_absolute_path(self): def test_absolute_path(self):
""" """
Regression test for ticket #6436 -- Regression test for ticket #6436 --